1

我们在我们的网页上显示 3rd 方 HTML,它应该正确呈现大多数内容,包括链接和图像。我们基本上想对所有脚本进行清理,即

<script>...</script>

但事情可能会变得非常有创意。脚本可以显示在“脚本”标签之外的一个简单情况是

<a href="javascript:alert('XSS')"> 

我们绝对需要允许链接。

事实上,我相信你们中的许多人都知道,这个问题非常残酷: http ://ha.ckers.org/xss.html

如果您处于用户向您的网站发表评论的情况,您可以逃避所有 HTML,或者转义除<em><i>和. 在我的情况下,我们需要允许所有 HTML 但禁用所有脚本,这要困难得多,但并非不常见的要求。是否有支持这种级别的 HTML 许可和 XSS 安全的库或工具?<u><s>

语言,按优先顺序排列:Python、PHP、Java、C/C++。

4

4 回答 4

0

您是否考虑过使用 PHP 框架 CodeIgnitor?

有一个包含 xss_clean() 函数的安全类以及更多看起来可以非常接近地满足您的需求的安全类。

http://codeigniter.com/user_guide/libraries/security.html

于 2012-05-15T22:01:49.537 回答
0

AFAIK,该站点仅列出了整个 XSS 注入。类似的方法strip_tags不适用于分段(多点)注入,我认为它更隐蔽。您可以做的最好的事情是在将字符显示到页面之前使用PHP 之htmlentities类的东西对字符进行编码。但这会阻止显示 HTML。

你可以做替代标记,比如论坛是如何做的(那些有[code][/code]语法的)。还可以考虑使用Markdown,这是 StackOverflow 中使用的相同编辑器,如果您只需要文本格式,它很容易使用。

于 2012-05-15T22:01:16.657 回答
0

我建议您可以找到最强大的 XSS 预防措施。一般来说,最好的方法是将您想要允许的元素和属性(和值)列入白名单,而不是将不允许的元素和属性(和值)列入黑名单。

我只能在HTML Purifier中提供基于 PHP 的解决方案,除了安全性之外,它还有助于确保您的标记有效(非常适合用户提交的 HTML 片段)。

我看到您找到了http://ha.ckers.org/ - 我还建议使用OWASP(开放 Web 应用程序安全项目)作为资源。

于 2012-05-15T22:30:07.227 回答
0

您可以使用 javascript(或 jQuery)在页面提交之前检查您的 href 是否具有<a>使用正则表达式的任何标签的 http:// 形式。

于 2012-05-15T22:00:57.627 回答