显示 HTML 用户输入,安全问题

use*_*486 3 html security input

在我的网站上,用户将能够输入内容的 html 标签,因此文本可以是粗体、斜体或链接和图像。我计划使用ckeditor或tinymce,它们实际上使用HTML标签(不是BBC代码或wiki语法)如果我允许HTML,当显示文本时它将被解释,并且它可能包含一些“hack”,如javascript或XSS。 ..我该如何避免这个安全问题?我是否必须列出想要的 html 标签并删除所有不需要的标签和内容?我可以为此使用条形标签吗?

例如,在 stackoverflow 上它是如何完成的?

您知道一些可以安全保存和安全解释有限 html 标签的 php/jquery 插件吗?

在此先感谢您的帮助

Tho*_*ger 5

您需要使用服务器端 HTML 清理程序和内容安全策略来防止内联脚本、评估和远程托管脚本

根据服务器端使用的语言,使用 HtmlSanitiser 或 python Bleach。

使用客户端验证或简单过滤根本无法保护您:

  1. 如果用户手动提交表单,则客户端验证(如 @Smamatti 所建议)不会对您有帮助。
  2. 当有人上传或或时,@user1477388 建议的天真过滤str_replace('<script>', '', $str);不会保护您<script src="foo"><<script>script>alert('foo');</script><body onload="alert('foo')";</body>