【发布时间】:2011-09-11 04:39:30
【问题描述】:
我已经阅读了很多文章,这些文章描述了使用 htmlspecialchars 和正则表达式、白名单/黑名单以及使用 HTML Purifier、HTMLawed 等 html 过滤脚本等功能来防止用户提交的 HTML 内容中 XSS 攻击的方法。
不幸的是,这些都不能解释像 eBay 这样的网站如何能够允许大量潜在的恶意 HTML 标签,如 <link>、<script>、<object> 以及 CSS 样式和 HTML 属性,如背景: url() 等。似乎它们允许用户在他们的项目描述中提交几乎任何东西。我在项目描述中看到了一些最复杂的 HTML、Javascript 和 Flash 模板。
eBay 有何不同之处?是否有我遗漏的其他技术或层,允许他们阻止 XSS 攻击,同时仍然允许在用户的项目描述中包含几乎所有内容?
对此的任何想法或见解将不胜感激!
【问题讨论】:
-
如果您使用 htmlpurifier 方法将已知良好标记列入白名单,并建立一个非常强大的白名单,您可以安全地执行此操作。
-
嘿。我能够创建一个包含警报的列表,但是当我尝试
alert(document.cookie)时,我收到以下错误:“请在突出显示的字段中提供正确的信息。说明 - 您的列表不能包含 javascript (".cookie", " cookie(", "replace(", IFRAME, META, or includes), cookies or base href." -
我想知道他们的过滤器有多聪明。即,编写 javascript 来生成“alert(document.cookie)”
-
感谢弗兰克,我以前使用过 HTMLPurifier,但只是开箱即用。开发人员友好且知识渊博,但在针对这种特殊情况的预设白名单或建议方面,他并没有提供太多帮助。是否有任何第 3 方白名单可以指向我?
-
我看到了。第 8 层防火墙评论是个笑话。认为它相当于“车灯液”。