在用户提交的html中禁用Javascript

col*_*arc 1 javascript security filter

如果我要创建一个用户可以将任意html放入其"个人资料"或类似内容的网站,我该如何阻止该html中嵌入的JavaScript运行?

我可以在for(;;);某处放置无限循环吗?如果是这样,我会把它放在哪里?

此方法还有哪些其他安全问题?

Mat*_*chu 10

嗯,无限循环只会挂起浏览器.

对于PHP,我建议使用HTML Purifier来保持邪恶的HTML,只是让好东西:)

Python HTML Sanitizer似乎也是Python的一个很好的选择,尽管我没有机会尝试它.这个StackOverflow问题使用BeautifulSoup提供了一些简单的HTML清理程序解决方案,但请务必小心第一个答案 - 它看起来没有属性白名单,这对于安全代码也是至关重要的.


Guf*_*ffa 5

您应该使用白名单方法.当您显示配置文件时,您应首先对所有内容进行HTML编码,然后您可以解码所允许的HTML元素.这样,只有您指定的特定元素和属性才可用,并且无法通过使用您没有想到的内容来隐藏任何代码.