什么是CSRF攻击?
CSRF,跨站请求伪造(英文全称是Cross-site request forgery),是一种挟持用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
CSRF是如何攻击的呢?
- 用户登陆银行,没有退出,浏览器包含了用户在银行的身份认证信息。
- 攻击者将伪造的转账请求,包含在帖子
- 用户在银行网站保持登陆的情况下,浏览帖子
- 将伪造的转账请求连同身份认证信息,发送到银行网站
- 银行网站看到身份认证信息,以为就是用户的合法操作,最后造成用户资金损失。
怎么应对CSRF攻击呢?
- 检查Referer字段
HTTP头中的Referer字段记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一网站,而如果黑客要对其实施CSRF攻击,他一般只能在他自己的网站构造请求。因此,可以通过验证Referer值来防御CSRF攻击。
- 添加校验token
以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。
- 敏感操作多重校验
对一些敏感的操作,除了需要校验用户的认证信息,还可以通过邮箱确认、验证码确认这样的方式多重校验。