天天看点

预防XSS攻击,(参数/响应值)特殊字符过滤

一、什么是xss攻击

xss是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括html代码和客户端脚本。攻击者利用xss漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而javascript是新型的“shellcode”。

二、xss漏洞的危害

(1)网络钓鱼,包括盗取各类用户账号;

(2)窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作;

(3)劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等;

(4)强制弹出广告页面、刷流量等;

(5)网页挂马;

(6)进行恶意操作,例如任意篡改页面信息、删除文章等;

(7)进行大量的客户端攻击,如ddos攻击;

(8)获取客户端信息,例如用户的浏览历史、真实ip、开放端口等;

(9)控制受害者机器向其他网站发起攻击;

(10)结合其他漏洞,如csrf漏洞,实施进一步作恶;

(11)提升用户权限,包括进一步渗透网站;

(12)传播跨站脚本蠕虫等;

……

三、如何编写代码来避免

如下代码可以避免xss注入,但是作者因知识面有限,故不能保证100%能完全将xss攻击者拒之门外,还需大家根据实际情况进行优化和改进。

既然我们通过代码来解决问题,就尽可能的不涉及开发人员的对原有代码修改,所以我们增加过滤器来拦截处理,本文原有框架使用springmvc。

1、illegalcharacterfilter.java

2、mhttpservletrequest.java

3、xssshieldutil.java

4、web.xml 配置

继续阅读