您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

捕获XSS(跨站点脚本)攻击的最佳正则表达式(在Java中)?

捕获XSS(跨站点脚本)攻击的最佳正则表达式(在Java中)?

不要使用正则表达式执行此操作。请记住,您并不是仅仅针对有效的HTML进行保护;您可以防止Web浏览器创建的DOM。可以诱使浏览器很容易地从无效的HTML生成有效的DOM。

例如,请参阅此混淆的XSS攻击列表。您是否准备量身定制正则表达式以防止在IE6 / 7/8上对Yahoo和Hotmail进行这种现实世界的攻击?

<HTML><BODY>
<?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">
<?import namespace="t" implementation="#default#time2">
<t:set attributeName="innerHTML" to="XSS&lt;SCRIPT DEFER&gt;alert(&quot;XSS&quot;)&lt;/SCRIPT&gt;">
</BODY></HTML>

如何在IE6上进行这种攻击?

<TABLE BACKGROUND="javascript:alert('XSS')">

该网站未列出的攻击如何?Jeff的方法存在的问题是,它不是声称的白名单。正如该页面上的某人熟练地指出:

它的问题是html必须干净。在某些情况下,您可以传入被黑的html,但它不会与之匹配,在这种情况下,它将返回被黑的html字符串,因为它不匹配任何要替换的内容。这不是严格的白名单。

我建议使用像AntiSamy这样的专用工具。它实际上是通过解析HTML,然后遍历DOM并删除所有不在可配置白名单中的内容来工作的。主要区别在于可以正常处理格式错误的HTML。

最好的部分是,它实际上对上述站点上的所有XSS攻击进行了单元测试。此外,比此API调用更容易的是:

public String toSafeHtml(String html) throws ScanException, PolicyException {

    Policy policy = Policy.getInstance(POLICY_FILE);
    AntiSamy antiSamy = new AntiSamy();
    CleanResults cleanResults = antiSamy.scan(html, policy);
    return cleanResults.getCleanHTML().trim();
}
java 2022/1/1 18:18:11 有496人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶