使用TinyMCE时防止XSS

使用TinyMCE时防止XSS,tinymce,xss,Tinymce,Xss,据我所知,TinyMCE自己会转义元字符,之后使用htmlspecialchars()只会使输出混乱,显示标记等,而不会在浏览器中呈现它们。关闭Javascript并输入恶意代码是一件容易的事情,当另一个打开Javascript的用户访问内容时,恶意代码将被呈现 因此,我需要使用适当的服务器端验证,但考虑到成千上万的XSS技术,我究竟如何才能正确地做到这一点呢?对于TinyMCE是否有任何有效的方法,例如“与TinyMCE一起使用htmlspecialchars()?” 到目前为止,我已经为允许

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

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

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

关于这个主题的任何建议都将非常感谢,但请记住,某些内容需要在输出上正确显示,这就是我首先使用TinyMCE的原因。我只需要受到XSS的保护


而且,在这个问题上,;如何保护自己免受CSS XS攻击,例如
style=“background image:url(这里是XSS);“

HTMLPurifier是php的一种解决方案:

for.Net:

我还通过以下方式用火扑救:

$(".userpost").children().off();
这可以防止用户利用现有的JavaScript。微软图书馆最大的麻烦之一是它在所有类的前面都添加了“x”。这很好,直到有人编辑了一个现有条目,并在前面添加了另一个x。由于上面的代码使得“x_u2;”前缀毫无意义,所以我将x_2;all与regex一起去掉

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

Regex.Replace(myHtml, "(<\w+\b[^>]*?\b)(class="")x[_]([a-zA-Z]*)( )?(?:x[_])?([a-zA-Z]*)?( )?(?:x[_])?([^""]*"")", "$1$2$3$4$5$6$7")
Regex.Replace(myHtml,“(]*?\b)(class=”“)x["]([a-zA-Z]*)()((?:x[)]([a-zA-Z]*)?((?:x[)]([^“]*”),“$1$2$3$4$5$6$7”)
我相信有更干净的方法