gpt4 book ai didi

java - org.jsoup.Jsoup 不处理 javascript 链接?

转载 作者:行者123 更新时间:2023-12-01 09:13:31 25 4
gpt4 key购买 nike

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

下面的测试用例将会失败,因为 javascript 协议(protocol)仍然被允许。关于如何使用 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.>

最佳答案

这是因为您在白名单中添加了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));

关于java - org.jsoup.Jsoup 不处理 javascript 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40760587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com