我们正在网页上显示第三方HTML,这些HTML应正确呈现大部分内容,包括链接和图片。我们基本上想要对所有脚本进行清理,即
<script>...</script>
但事情可以变得非常有创意。脚本可以在“脚本”标记之外显示的简单情况是
<a href="javascript:alert('XSS')">
我们肯定需要允许链接。
事实上,我相信很多人都知道,这个问题非常残酷:http://ha.ckers.org/xss.html
如果您处于用户向您的网站发布评论的情况,您可以逃脱所有HTML,或者可以转义除<em>
,<i>
,{{1之外的所有HTML }和<u>
。在我的情况下,我们需要允许所有HTML,但禁用所有脚本,这是更难,但不是一个罕见的要求。是否有支持此级别的HTML-permissiveness和XSS-safety的库或工具?
语言,按优先顺序排列:Python,PHP,Java,C / C ++。
答案 0 :(得分:0)
您可以使用javascript(或jQuery)在页面提交之前检查您的href具有使用正则表达式的任何<a>
标记的形式http://。
答案 1 :(得分:0)
AFAIK,该网站仅列出整个XSS注射。类似于strip_tags
的方法不适用于碎片(多点)注射,我认为这种注射更隐蔽。您可以做的最好的事情是在将字符显示到页面之前使用PHP's htmlentities
等字符对其进行编码。但这会阻止HTML显示。
您可以执行其他标记,例如论坛如何执行(具有[code][/code]
语法的标记)。还可以考虑使用Markdown,这是StackOverflow中使用的相同编辑器,如果你只需要文本格式化,它很容易使用。
答案 2 :(得分:0)
您是否考虑过使用PHP框架CodeIgnitor?
有一个安全类,其中包含xss_clean()函数以及更多可以非常紧密地处理您需求的安全类。
答案 3 :(得分:0)
我建议您可以找到最强大的XSS预防措施。一般来说,最好的方法是将您想要允许的元素和属性(和值)列入白名单,而不是将您不允许的元素和属性列入黑名单。
我只能在HTML Purifier中提供基于PHP的解决方案,除了安全性之外,它还有助于确保您的标记有效(非常适合用户提交的HTML代码段)。
我看到你找到了http://ha.ckers.org/ - 我还建议使用OWASP(Open Web Application Security Project)作为资源。