来源:自学PHP网 时间:2015-04-17 10:16 作者: 阅读:次
[导读] 目录csrf是什么一般防御做法如何在spring mvc中实现扩展问题1 csrf是什么csrf全称是Cross-site request forgery,http: en wikipedia org wiki Csrf危害:使受害用户在不经意间执行了不是用户意愿的请求。...
目录
1.csrf是什么csrf全称是Cross-site request forgery,http://en.wikipedia.org/wiki/Csrf 危害:使受害用户在不经意间执行了不是用户意愿的请求。最终导致泄密和执行了其他高危害操作。 2.一般防御做法防御基本原理:本质上是做好用户数据提交的完整性,保证用户提交的内容是用户发起的非篡改过的请求。 通常做法是,在用户在访问页面的时候,通过隐藏于渲染一个token,这个token由服务器在后端渲染。用户在执行变更的提交时,把token作为参数带上。服务器在后端校验token是否合法,是否被使用过。 这样,就保障了用户提交过来的请求是用户本人发起的请求。但这个前提是,当前有效的token没有被泄漏。 具体防范事例可见: http://www.2cto.com/Article/201310/247849.html csrf token的生成: 1. 对于需要防止重复提交的场景,token必须只能唯一生成一个并且只能使用一次。可以用uuid或者其他唯一生成的方式。 2. 对于需要在用户会话期间使用的场景,可以基于用户的sessionid+时间加密生成。 csrf token的储存:一般在session中,或者cookie中。 3.如何在spring mvc中实现如何与spring结合:利用spring的HandlerInterceptorAdapter进行请求的csrf的校验,利用ReuqestDataValueProcessor来进行隐藏input的csrf token渲染。 可参考 http://www.2cto.com/Article/201310/247850.html 4.扩展问题session存储和同步 由于默认tomcat使用内存管理session,在集群环境下,上述的做法将会存在不一致问题。比如用户从A服务器获取了表单和token,但是提交表单时候却往B服务器提交,这样B服务器判断用户为csrf攻击,所以,用session管理涉及道同步问题。当然,另一个做法是把cookie当session用,把csrf的token放在用户的cookie中。但是,为了避免泄漏token,需要对token进行加密,和进行http only的设置,后者避免js对cookie中的token进行访问。 csrf token泄漏与xss的关系 和xsrf的关系 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com