如何避免CSRF攻击

96 阅读1分钟

什么是CSRF攻击?

CSRF,跨站请求伪造(英文全称是Cross-site request forgery),是一种挟持用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

CSRF是如何攻击的呢?

  1. 用户登陆银行,没有退出,浏览器包含了用户在银行的身份认证信息。
  2. 攻击者将伪造的转账请求,包含在帖子
  3. 用户在银行网站保持登陆的情况下,浏览帖子
  4. 将伪造的转账请求连同身份认证信息,发送到银行网站
  5. 银行网站看到身份认证信息,以为就是用户的合法操作,最后造成用户资金损失。

怎么应对CSRF攻击呢?

  • 检查Referer字段

HTTP头中的Referer字段记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一网站,而如果黑客要对其实施CSRF攻击,他一般只能在他自己的网站构造请求。因此,可以通过验证Referer值来防御CSRF攻击。

  • 添加校验token

以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。

  • 敏感操作多重校验

对一些敏感的操作,除了需要校验用户的认证信息,还可以通过邮箱确认、验证码确认这样的方式多重校验。