Java-java web中如何防止XSS(跨站脚本漏洞)
在url中通常会传递一些参数,例如:http://www.baidu.com/?world=aaa,恶意的攻击是在参数中添加特殊字符,如:.%22%3C/script%3E%3Cscript%3Ealert(111);%3C/script%3E,执行脚本。java中可以用org.apache.commons.lang.StringEscapeUtils提供的Escape函数,但是这个函数会将有所的特殊字符都给过滤了,我要传递url=/index这样的参数就不行了。有没有好的方式防止这种恶意的代码呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
ls说的我不太明白,你在输出的时候转义,那传参携带的JS神马的不是还是执行了吗?能不能再仔细的解释一下?难道你的意思是:把返回给攻击者的数据进行转义?除去携带出来的cookie神马的吗?
反过来做就可以了,把内容输出到页面的时候再调用StringEscapeUtils.escapeHtml来转义要输出的内容,不要在后台处理的时候调用,因为后台需要真实的数据,真正到输出的时候才需要做转义,目前很多成熟的框架都是这样的,例如淘宝的webx3。