【问题标题】:org.jsoup.Jsoup not handling javascript links?org.jsoup.Jsoup 不处理 javascript 链接?
【发布时间】:2016-11-24 15:12:10
【问题描述】:

我正在尝试使用 Java lib Jsoup 清理包含可能恶意内容 (XSS) 的文本字符串。我必须允许 link 链接,但出于 XSS 原因我不想允许 javascript 链接。

下面的测试用例将失败,因为仍然允许使用 javascript 协议。关于如何使用 Jsoup 内置函数解决此问题的任何想法?

@Test
public void test() {

    Whitelist tWhitelist = Whitelist.none();

    tWhitelist.addAttributes("a", "href");
    tWhitelist.removeProtocols("a", "href", "javascript");      

    String tUnsafe = "<a href=\"javascript:alert(1)\">Link</a> is a link.";
    assertEquals("Link is a link.", Jsoup.clean(tUnsafe, tWhitelist));
}

    org.junit.ComparisonFailure: expected:<[Link] is a link.> but was:<[<a href="javascript:alert(1)">Link</a>] is a link.>

【问题讨论】:

    标签: java jsoup xss


    【解决方案1】:

    这是因为你在白名单中添加了a标签,你可以直接使用none白名单,比如:

    Whitelist tWhitelist = Whitelist.none();
    
    String tUnsafe = "<a href=\"javascript:alert(1)\">Link</a> is a link.";
    assertEquals("Link is a link.", Jsoup.clean(tUnsafe, tWhitelist));
    

    或者你可以使用basic白名单保留其他href,比如:

        Whitelist tWhitelist = Whitelist.basic();
    
        tWhitelist.removeProtocols("a", "href", "javascript");
        String tUnsafe = "<a href=\"javascript:alert(1)\">Link</a> is a link.<a href=\"http://www.google.com\" rel=\"nofollow\">google</a>";
        assertEquals("<a rel=\"nofollow\">Link is a link.</a><a href=\"http://www.google.com\" rel=\"nofollow\">google</a>", Jsoup.clean(tUnsafe, tWhitelist));
    

    【讨论】:

      【解决方案2】:

      自己发现...这将使指定的协议有效,但要删除 javascript 协议

          Whitelist whitelist = Whitelist.none();
      
          whitelist
              .addTags("a")
              .addAttributes("a", "href")
              .addProtocols("a", "href", "http", "https", "mailto");
      
          String safeText = Jsoup.clean(untrustedText, whitelist);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-13
        • 1970-01-01
        • 1970-01-01
        • 2019-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多