相关文章:
1. http://www.cnblogs.com/xiaoqian1993/p/5816085.html 深入解析跨站请求伪造漏洞:原理剖析
2 .http://blog.csdn.net/kkdelta/article/details/17503947 web安全之跨站请求伪造
原理:
CSRF攻击经常利用目标站点的身份验证机制,CSRF攻击这一弱点的根源在于Web的身份验证机制虽然可以向目标站点保证一个请求来自于某个用户的浏览器,但是却无法保证该请求的确是那个用户发出的或者是经过那个用户批准的。
CSRF和XSS攻击的区别
XSS攻击需要JavaScript,而CSRF攻击不需要;XSS攻击要求站点接受恶意代码,而对于CSRF攻击来说,恶意代码位于第三方站点上。过滤用户的输入可以防止恶意代码注入到某个站点,但是它无阻止法恶意代码在第三方站点上运行。由于恶意代码可以在第三方站点上运行,所以防御XSS攻击的措施无法保护站点不受CSRF攻击的危害。如果站点具有XSS攻击漏洞,那么它也有CSRF攻击漏洞。但是,即使站点针对XSS攻击采取了全面保护,却仍然面临CSRF攻击的威胁。
解决:
(1)拒绝恶意请求。过滤器中添加如下。验证Referer请求来源:
1 //HTTP 头设置 Referer过滤 2 String referer = request2.getHeader("Referer"); //REFRESH 3 if(referer!=null && referer.indexOf(basePath)<0){ request2.getRequestDispatcher(request2.getRequestURI()).forward(request2, response); 4 }
(2)在请求参数中加一个随机token,在服务器验证这个token,通过即销毁重设。