Web应用安全:CSRF攻击原理及预防手段
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CSRF攻击原理及预防手段
摘要:通过本节介绍,让学生了解CSRF的攻击原理以及如何预防CSRF。
关键词:CSRF
一、CSRF攻击原理
1、攻击流程
我们先来梳理一遍CSRF的攻击流程,从流程中分析攻击原理。
步骤一:用户登录、浏览并信任正规网站WebA,同时,WebA通过用户的验证并在用户的浏览器中产生Cookie。
步骤二:攻击者WebB通过在WebA中添加图片链接等方式诱导用户User访问网站WebB。
步骤三:在用户User被诱导访问WebB后,WebB会利用用户User的浏览器访问第三方网站WebA,并发出操作请求。
步骤四:用户User的浏览器根据WebB的要求,带着步骤一中产生的Cookie访问WebA。
步骤五:网站WebA接收到用户浏览器的请求,WebA无法分辨请求由何处发出,由于浏览器访问时带上用户的Cookie,因此WebA会响应浏览器的请求,如此一来,攻击网站WebB 就达到了模拟用户操作的目的。
2、原理分析
由一台中CSRF攻击利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web 应用程序,去执行并非用户本意的操作。
二、CSRF预防手段
1、提交验证码
在表单中添加一个随机的数字或字母验证码。
通过强制用户和应用进行交互。
来有效地遏制CSRF攻击。
2、Referer Check
检查假设是非正常页面过来的请求,则极有可能是CSRF攻击。
3、token验证
(1)在 HTTP 请求中以参数的形式添加一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,假设请求中没有 token 或者 token 内容不对,则觉得可能是CSRF 攻击而拒绝该请求。
(2)token必须足够随机
(3)敏感的操作应该使用POST,而不是GET。
比如表单提交。
4、在HTTP头中自己定义属性并验证
这样的方法也是使用 token 并进行验证。
这里并非把 token 以參数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自己定义的属性里。
通过 XMLHttpRequest 这个类,能够一次性给全部该类请求加上 csrftoken 这个 HTTP 头属性。
并把 token 值放入当中。
这样攻克了上种方法在请求中添加 token 的不便。
同一时候,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用操心 token 会透过 Referer 泄露到其它站点中去。