如何清理HTML代码以防止Java或JSP中的XSS攻击?
我正在编写一个基于 servlet 的应用程序,我需要在其中提供一个消息传递系统。我很着急,所以我选择CKEditor来提供编辑功能,我目前将生成的html直接插入显示所有消息的网页中(消息存储在MySQL databse中,fyi)。CKEditor已经根据白名单过滤HTML,但用户仍然可以通过POST请求注入恶意代码,所以这还不够。
一个好的库已经存在,可以通过过滤HTML标签来防止XSS攻击,但它是用PHP编写的:HTML Purifier
那么,有没有类似的成熟库可以在Java中使用呢?基于白名单的简单字符串替换似乎还不够,因为我也想过滤格式错误的标签(这可能会改变显示消息的页面的设计)。
如果没有,那么我应该如何继续?XML 解析器似乎有些过分。
注意:SO上有很多关于这个问题的问题,但所有答案都参考过滤所有HTML标签:我想保留有效的格式标签。