CSRF, Cross-Site Request Forgerr, 跨站请求伪造.
一般我们认为:如果请求的发出不是用户的意愿, 那么这个请求就是伪造的.
1. 攻击原理
- 用户访问正常网站A, 并获得授权
- 用户未退出网站A, 并且访问了恶意网站B
- 浏览器自动触发恶意网站B中的恶意请求–跨站访问网站A
- 网站A收到请求, 认为用户以获得授权, 请求合法并执行.
2. 攻击类型
- HTML CSRF
使用HTML元素发起攻击.
是最普遍的CSRF攻击方式. - JSON HiJacking
- Flash CSRF
3. 危害
- 篡改目标网站上的用户数据
- 盗取用户隐私数据
- 作为其他攻击向量的辅助攻击手法
- 传播CSRF蠕虫
- …
4. CSRF防御
- 验证码
会影响用户体验. - 验证请求头中的referer
浏览器中有防止信息追踪策略, 请求不会带上referer, 导致误判. - token凭证
token为服务器端提供的随机秘钥, 攻击者无法伪造.
服务器先给浏览器提供token, 用户提交请求后, 验证token有效性, 在处理请求;若没有token或token不正确, 则判定为CSRF攻击, 拒绝请求.