12

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

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

4

1 回答 1

19

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

这是来自 owasp 邮件列表的消息,请求创建 HTML sanitizer 项目,包括其与 antisamy 的一些优点和不同之处的列表。

我想开始一个与 AntiSamy 非常相似的新 OWASP 项目。

我想将此项目称为“OWASP Java HTML Sanitizer”,并且已经在以下位置提供了代码:

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

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

  1. 此代码提供 DOM 模式下 AntiSamy 清理速度的 4 倍和 SAX 模式下 AntiSamy 速度的 2 倍
  2. 非常容易使用。它允许简单的编程 POSITIVE 策略配置(见下文)。没有 XML 配置。
  3. 它不受 Niko HTML 解析器带来的各种安全漏洞的影响
  4. 由我自己和 Google AppSec 团队的 Mike Samuel 积极维护
  5. 已经通过了 AntiSamy 80% 的单元测试以及更多
  6. 只有3个依赖的jar文件
  7. 这是一个纯 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");

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

  • 吉姆
于 2015-03-25T15:27:56.307 回答