使用jquery parseHTML删除脚本标签是否足以防止XSS攻击?

时间:2018-11-22 09:12:57

标签: django security xss wysiwyg froala

我们正在使用WYSWIG编辑器(Froala编辑器)并存储由用户创建的原始HTML。因此,转义字符串不是一种选择。我打算将HTML字符串存储在引号内的变量或数据属性中。然后,读取该HTML字符串并使用jquery的parseHTML删除脚本标签,并仅保留某些属性,然后再将HTML加载到编辑器中。这种方法足以阻止所有XSS攻击吗?

1 个答案:

答案 0 :(得分:2)

不是。 一些反例:

  • <a href="javascript:alert(1)">
  • <div onclick="alert(1)">
  • <img src="javascript:alert(1)">(实际上在现代浏览器中不再起作用)
  • <div style="background-image: url(javascript:alert(1))">(不再工作)

部分困难在于它还取决于用户使用的浏览器。最重要的是,您需要一个合适的消毒剂,它也可以在客户端使用。 (它也可以在服务器上,但是如果有的话,请考虑编辑器的“预览”功能-如果没有将预览发送到服务器,则服务器端清理程序的用处不大。:))

Google Caja是(是?)一个HTML sanitizer项目,它也有一个纯javascript组件。有other个解决方案as well

请注意,如果您想在javascript中进行操作,则编辑器javascript必须支持通过自定义消毒剂运行其内容,然后才能将其插入DOM。