我应该采取什么预防措施来防止用户提交的HTML上的XSS?

fen*_*ent 4 javascript xss

我打算制作一个允许用户在我的网站上发布整个网页的网络应用程序.我正在考虑使用HTML Purifier,但我不确定,因为HTML Purifier编辑了HTLM,重要的是保持HTML的发布方式.所以我在考虑制作一些正则表达式来摆脱所有脚本标签和所有javascript属性,如onload,onclick等.

我刚才看到一个谷歌视频有一个解决方案.他们的解决方案是使用其他网站发布javascript,因此无法访问原始网站.但我不想为此购买新域名.

Cha*_* Ma 5

这种事情要小心自制的正则表达式

像正则表达式一样

s/(<.*?)onClick=['"].*?['"](.*?>)/$1 $3/
Run Code Online (Sandbox Code Playgroud)

看起来它可能会摆脱onclick事件,但你可以绕过它

<a onClick<a onClick="malicious()">="malicious()">
Run Code Online (Sandbox Code Playgroud)

运行正则表达式将获得类似的东西

<a onClick ="malicious()">
Run Code Online (Sandbox Code Playgroud)

您可以通过在该字符串上重复运行正则表达式来修复它,直到它不匹配,但这只是简单的正则表达式清理程序是多么容易的一个例子.