Java:Owasp AntiSamy 与 Owasp-java-html-sanitize

Posted

技术标签:

【中文标题】Java:Owasp AntiSamy 与 Owasp-java-html-sanitize【英文标题】:Java: Owasp AntiSamy vs Owasp-java-html-sanitize 【发布时间】:2015-04-19 02:34:32 【问题描述】:

我现在正在寻找 html 净化器库。而且我发现有两个“owasp”库。第一个是https://code.google.com/p/owasp-java-html-sanitizer/,第二个是https://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project。

我的问题是 - 比较它们的优缺点是什么。

【问题讨论】:

【参考方案1】:

OWASP java html sanitizer 是比 antisamy 更新的项目。这些项目的目标是相同的——净化 HTML 以防止 XSS 并过滤掉其他不需要的内容。然而他们的方法是不同的。每种方法都有其权衡,因此您应该根据您的要求选择解决方案。简而言之,html sanitizer 使用起来更简单、速度更快,但另一方面它的灵活性较低。但是,对于大多数用户来说,它应该已经足够好了。注意,antisamy 不仅可以处理 html,还可以处理 css。

Here is message 来自 owasp 邮件列表,请求创建 HTML sanitizer 项目,包括其与 antisamy 的一些优点和区别的列表。

我想开始一个新的 OWASP 项目,该项目非常类似于 反萨米。

我想将此项目称为“OWASP Java HTML Sanitizer”,并且 已有代码:

https://code.google.com/p/owasp-java-html-sanitizer/

这是来自 Google 捐赠的 Caja 项目的代码。它是 相当高的性能和低内存利用率。

    此代码在 DOM 模式下提供 4 倍的 AntiSamy 清理速度,在 SAX 模式下提供 2 倍的 AntiSamy 速度 非常易于使用。它允许简单的编程 POSITIVE 策略配置(见下文)。没有 XML 配置。 它不受 Niko HTML 解析器带来的各种安全漏洞的影响 由我自己和 Google AppSec 团队的 Mike Samuel 积极维护 已经通过了 AntiSamy 80% 的单元测试还有更多。 只有 3 个依赖的 jar 文件 这是一个纯 Java 6 的项目,不支持 Java 5 或更低版本(请注意 AntiSamy 支持 1.4+)。

我们目前处于 Alpha 阶段 - 但将做好生产准备 很快。

示例程序化政策示例:

     // A VERY SIMPLE WHITELISTING POLICY
    final ImmutableSet<String> okTags = ImmutableSet.of(
        "a", "b", "br", "div", "i", "img", "input", "li",
        "ol", "p", "span", "ul");

    final ImmutableSet<String> okAttrs = ImmutableSet.of(
        "div", "checked", "class", "href", "id", "target", "title", "type");

你怎么看?有点尊重的竞争是好事吗?

吉姆

【讨论】:

但是使用 Html Sanitizer 您必须定义一个策略,并且 AntiSamy 已经包含预定义的策略集,这对于足够通用的 html 真正有帮助。 Html Sanitizer 现在似乎包含了预打包的策略:github.com/OWASP/java-html-sanitizer/blob/master/src/main/java/…

以上是关于Java:Owasp AntiSamy 与 Owasp-java-html-sanitize的主要内容,如果未能解决你的问题,请参考以下文章

Web安全头号大敌XSS漏洞解决最佳实践

原创干货 | XSS漏洞解析与挖掘

AntiSamy 策略文件在 Web 项目中的位置

antisamy 解析器强制关闭标签

Java对html标签的过滤和清洗

Exchange owa与ecp虚拟目录重建