在用户提交的html中禁用Javascript

时间:2010-07-06 21:14:47

标签: javascript security filter

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

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

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

2 个答案:

答案 0 :(得分:10)

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

对于PHP,我建议HTML Purifier只保留好的东西来保持恶意HTML:)

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

答案 1 :(得分:5)

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