当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何清理HTML代码以防止Java或JSP中的XSS攻击?》经验,为你挑选了2个好方法。

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

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

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

如果没有,那我该怎么办?XML解析器似乎有点过分.

注意:在SO上有很多关于此的问题,但所有答案都涉及过滤所有HTML标记:我想保留有效的格式化标记.



1> BalusC..:

我建议使用Jsoup.以下是其网站的相关摘录.

清理不受信任的HTML

问题

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

将jsoup HTML Cleaner与a指定的配置一起使用Whitelist.

String unsafe = 
      "

Link

"; String safe = Jsoup.clean(unsafe, Whitelist.basic()); // now:

Link

Jsoup也提供了更多的优势.另请参阅Java中HTML解析器的优缺点.



2> Thierry-Dimi..:

你应该使用AntiSamy.(这就是我所做的)

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有