【发布时间】:2011-04-04 23:18:43
【问题描述】:
我正在编写一个基于 servlet 的应用程序,我需要在其中提供一个消息传递系统。我很着急,所以我选择CKEditor提供编辑功能,我目前将生成的html直接插入显示所有消息的网页中(消息存储在MySQL数据库中,仅供参考)。 CKEditor 已经根据白名单过滤了 HTML,但是用户仍然可以通过 POST 请求注入恶意代码,所以这还不够。
已经有一个很好的库来通过过滤 HTML 标签来防止 XSS 攻击,但是它是用 PHP 编写的:HTML Purifier
那么,有没有类似的成熟的库可以用在Java中? 基于白名单的简单字符串替换似乎还不够,因为我也想过滤格式错误的标签(这可能会改变显示消息的页面的设计) .
如果没有,那我应该如何进行? XML 解析器似乎有点矫枉过正。
注意:关于 SO 有很多关于此的问题,但所有答案均指过滤所有 HTML 标签:我想保留有效的格式标签。
【问题讨论】:
-
替代方案:使用 BBCode 进行用户输入,有很好的编辑器。