如果我要创建一个用户可以将任意html放入其“个人资料”或类似内容的网站,我该如何阻止该html中嵌入的JavaScript运行?
我可以在某处放置一个无限循环for(;;);
吗?如果是这样,我会把它放在哪里?
这种方法还有哪些其他安全问题?
答案 0 :(得分:10)
嗯,无限循环会挂起浏览器。
对于PHP,我建议HTML Purifier只保留好的东西来保持恶意HTML:)
Python HTML Sanitizer似乎也是Python的一个很好的选择,尽管我没有机会尝试它。 This StackOverflow question使用BeautifulSoup提供了一些简单的HTML清理程序解决方案,但请务必小心第一个答案 - 它看起来没有属性白名单,这对于安全代码也很重要
答案 1 :(得分:5)
您应该使用白名单方法。当您显示配置文件时,您应首先对所有内容进行HTML编码,然后您可以解码所允许的HTML元素。这样,只有您指定的特定元素和属性才可用,并且无法通过使用您不想到的内容来隐藏任何代码。