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

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

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

Purifier

那么, ?基于白名单的简单字符串替换似乎还不够,因为

(这可能会更改显示消息的页面的设计)。

如果没有,那我应该怎么做?XML解析器似乎过大了。

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

回答:

我建议为此使用Jsoup。

您想允许不受信任的用户提供HTML以在您的网站上输出(例如,作为评论提交)。您需要清除此HTML,以避免跨站点脚本(XSS)攻击。

将jsoup HTML Cleaner用于由指定的配置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>

以上是 如何清理HTML代码以防止Java或JSP中的XSS攻击? 的全部内容, 来源链接: utcz.com/qa/413761.html

回到顶部