当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《捕获XSS(跨站点脚本)攻击的最佳正则表达式(在Java中)?》经验,为你挑选了1个好方法。

杰夫实际上在Sanitize HTML中发布了这个.但他的例子是在C#中,我实际上对Java版本更感兴趣.有没有人有更好的Java版本?他的例子是否足以直接从C#转换为Java?

[更新]我已经对这个问题表示了赏心悦目,因为当我问这个问题时,SO并不那么受欢迎(*).至于与安全相关的任何事情,人们对它的看法越多,它就越好!

(*)事实上,我认为它仍处于封闭测试阶段



1> Chase Seiber..:

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

例如,请参阅此混淆的XSS攻击列表.你准备好定制一个正则表达式来防止在IE6/7/8上对Yahoo和Hotmail进行现实攻击吗?






这个攻击在IE6上运行怎么样?

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

它的问题是,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();
}

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有