如何清理 HTML 代码以防止 Java 或 JSP 中的 XSS 攻击? [英] How to sanitize HTML code to prevent XSS attacks in Java or JSP?

查看:36
本文介绍了如何清理 HTML 代码以防止 Java 或 JSP 中的 XSS 攻击?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm writing a servlet-based application in which I need to provide a messaging system. I'm in a rush, so I choose CKEditor to provide editing capabilities, and I currently insert the generated html directly in the web page displaying all messages (messages are stored in a MySQL databse, fyi). CKEditor already filters HTML based on a white list, but a user can still inject malicious code with a POST request, so this is not enough.

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

A good library already exists to prevent XSS attacks by filtering HTML tags, but it's written in PHP: HTML Purifier

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

So, is there a similar mature library that can be used in Java ? A simple string replacement based on a white list doesn't seem to be enough, since I'd like to filter malformed tags too (which could alter the design of the page on which the message is displayed).

如果没有,那我应该如何进行?XML 解析器似乎有点矫枉过正.

If there isn't, then how should I proceed? An XML parser seems overkill.

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

推荐答案

你应该使用 反萨米.(这就是我所做的)

这篇关于如何清理 HTML 代码以防止 Java 或 JSP 中的 XSS 攻击?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆