《白帽子讲Web安全》4-跨站点请求伪造(CSRF)

第4章 跨站点请求伪造(CSRF)

Cross Site Request Forgery

4.1 CSRF简介

举例,攻击者仅仅诱使用户访问了一个页面,就以该用户的身份在第三方站点里执行了一次操作(删除了搜狐博客上的一篇文章)。

4.2 CSRF进阶

4.2.1 浏览器的Cookie策略

  1. 浏览器所持有的Cookie分为两种:
    • Session Cookie,又称“临时Cookie”
      • 没有指定Expire时间,浏览器关闭后,Seesion-Cookie就失效了。
      • 保存在浏览器的内存空间中
    • Third-party Cookie,又称“本地Cookie”
      • 服务器在Set-Cookie时指定了Expire时间,这种Cookie会保存在本地。
      • 保存在本地

4.2.2 P3P头的副作用

  1. P3P Header,The Platform for Privacy Preference.
  2. 如果网站返回给浏览器的HTTP头中包含有PSP头,则在某种程度上来说,将允许浏览器发送第三方Cookie。
  3. GET & POST
  4. Flash CSRF
  5. CSRF Worm

4.3 CSRF的防御

4.3.1 验证码

4.3.2 Refer Check

4.3.3 Anti CSRF Token

现在业界针对CSRF的防御,一致的做法是使用一个Token

  1. CSRF的本质
    • CSRF攻击成功的本质原因是,重要操作的所有参数都是可以被攻击者猜测到的。
    • 攻击者只有预测出URL的所有参数与参数值,才能成功地构造一个伪造地请求。
      • 解决方案
        • 把参数加密,或者使用一些随机数,从而让攻击者无法猜测到参数值。
      • 存在问题
        • 加密/混淆后的URL非常难读,对用户非常不友好。
        • 如果加密的参数每次都改变,则某些URL将无法被用户收藏。
        • 参数被加密或哈希,会给数据分析工作造成很大的困扰。
    • 更通用的解决方案:Anti CSRF Token
      • Token需要被同时放在表单和Session中。
      • 要注意Token的保密性和随机性。

4.4 小结

CSRF攻击是攻击者利用用户的身份操作用户账户的一种攻击方式。

你可能感兴趣的:(Web)