啥是CRSF:简单来说就是服务器把错误的浏览器请求给处理了。这个错误的请求是恶意攻击者想要的
上图所示:用户访问了B服务器(恶意的),返回携带恶意脚本的页面,通过脚本,伪造访问了A,而且A也响应了,但是用户压根不知道。
危害:请求可以伪造,并发送给用户,让他们做一切没打算做的操作,比如更改密码。。。。
成因:
- 请求没有在服务端验证(token,csrf token)
- 服务器没有检查是否是用户生成的请求
CSRF tokens
服务器检查唯一的token,然后才处理
解决方案
1. 生成无法重用且不可预知的token
- 值够大
- 随机的
- 唯一的
- token算法中包含其他的因素,增加复杂度
2. token以隐藏的形式嵌入html
3. 提交表单时验证token