gpt4 book ai didi

java - 如何清理 HTML 代码以防止 Java 或 JSP 中的 XSS 攻击?

转载 作者:太空狗 更新时间:2023-10-29 22:50:17 24 4
gpt4 key购买 nike

我正在编写一个基于 servlet 的应用程序,我需要在其中提供一个消息传递系统。我赶时间,所以我选择CKEditor提供编辑功能,我目前将生成的 html 直接插入显示所有消息的网页中(消息存储在 MySQL 数据库中,仅供引用)。 CKEditor 已经基于白名单过滤 HTML,但是用户仍然可以通过 POST 请求注入(inject)恶意代码,所以这还不够。

已经存在一个很好的库来通过过滤 HTML 标记来防止 XSS 攻击,但它是用 PHP 编写的:HTML Purifier

那么,是否有类似的成熟库可以用在Java中?基于白名单的简单字符串替换似乎还不够,因为我也想过滤格式错误的标签(这可能会改变显示消息的页面的设计) .

如果没有,那我该怎么办? XML 解析器似乎有些矫枉过正。

注意:SO 上有很多关于此的问题,但所有答案都引用过滤所有 HTML 标签:我想保留有效的格式标签。

最佳答案

我建议使用 Jsoup为了这。这是来自 its site 的相关摘录.

Sanitize untrusted HTML

Problem

You want to allow untrusted users to supply HTML for output on your website (e.g. as comment submission). You need to clean this HTML to avoid cross-site scripting (XSS) attacks.

Solution

Use the jsoup HTML Cleaner with a configuration specified by a Whitelist.

String unsafe = 
"<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>";
String safe = Jsoup.clean(unsafe, Whitelist.basic());
// now: <p><a href="http://example.com/" rel="nofollow">Link</a></p>

Jsoup 还提供了更多优势。另见 Pros and Cons of HTML parsers in Java .

关于java - 如何清理 HTML 代码以防止 Java 或 JSP 中的 XSS 攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3587199/

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