【问题标题】:Protecting against XSS when using TinyMCE使用 TinyMCE 时防止 XSS
【发布时间】:2011-07-28 02:54:53
【问题描述】:

据我所知,TinyMCE 会自行转义元字符,之后使用 htmlspecialchars() 只会使输出混乱并显示 标签等等,而不是在浏览器中呈现它们。关闭 Javascript 并输入恶意代码是一件容易的事,当另一个打开 Javascript 的用户访问内容时,恶意代码将被呈现。

所以我需要使用正确的服务器端验证,但究竟 -如何- 考虑到成千上万的 XSS 技术,我可以正确地做到这一点吗?是否有任何适用于 TinyMCE 的有效方法,例如“将 htmlspecialchars() 与 TinyMCE 一起使用?”

到目前为止,我已经为允许的 HTML 标签创建了一个白名单,替换了内容中的任何 javascript: 和类似的 :void,以尝试防止内联 Javascript,例如 onClick="javascript:void(alert("XSS"));",但我觉得这不是够了。

非常感谢任何关于该主题的建议,但请记住某些内容需要在输出中正确显示,这就是我首先使用 TinyMCE 的原因。我只需要防范 XSS。

另外,在这个主题上;如何保护自己免受 style="background-image: url(XSS here);" 等 CSS XSS 的攻击?

【问题讨论】:

    标签: tinymce xss


    【解决方案1】:

    HTMLPurifier 是 php 的一种解决方案:http://hp.jpsband.org/

    【讨论】:

      【解决方案2】:

      对于.Net:http://msdn.microsoft.com/en-us/security/aa973814.aspx

      我也使用以下方法以火攻毒:

      $(".userpost").children().off();
      

      这可以防止用户利用您现有的 JavaScript。微软库最大的烦恼之一是它在所有类前面添加了“x_”。在有人编辑现有条目并在前面添加另一个 x_ 之前,这很好。我只是把 x_ 和正则表达式一起去掉,因为上面的代码使“x_”前缀毫无意义。

      这将删除 VB.Net 中 3 个类的“x_”:

      Regex.Replace(myHtml, "(<\w+\b[^>]*?\b)(class="")x[_]([a-zA-Z]*)( )?(?:x[_])?([a-zA-Z]*)?( )?(?:x[_])?([^""]*"")", "$1$2$3$4$5$6$7")
      

      我确信有一种更清洁的方法。

      【讨论】:

        猜你喜欢
        • 2012-10-28
        • 2023-01-24
        • 2018-07-16
        • 2013-12-20
        • 1970-01-01
        • 2011-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多