梗概
CSRF攻击即Cross-site request forgery,跨站请求伪造,直白来说就是恶意网站伪装成用户,向被害网站发起操作请求。
图解

原理
指向原始笔记的链接
- 在请求目标URL的时候自动携带对应域的cookie
实例
- 用户登录受害网站,浏览器把获取的身份凭证保存在本地cookie中;
- 用户被诱导打开黑客网站,黑客网站向受害网站服务器发起一个恶意请求,由于[base::cookie]的特性(且没有进行防御),这时浏览器会自动带上第一步中的身份凭证;
- 受害网站服务端对恶意请求校验,发现有身份凭证,恶意请求被成功受理; 如果黑客的操作是将用户的钱转到自己的账户,那么这时,他已经卷款跑路了。
防御
预防CSRF攻击主要有以下策略:
- 使用验证码,在表单中添加一个随机的数字或者字母验证码,强制要求用户和应用进行直接的交互,
- HTTP中Referer字段,检查是不是从正确的域名访问过来,他记录了HTTP请求的来源地址。 ⭐
- 使用token认证,在HTTP请求中添加token字段([use::Authorization]),并且在服务器建立一个拦截器验证这个token,如果token不对,就拒绝这个请求。
- 因为这个需要js手动携带,而恶意网站无法访问受害网站域下的浏览器本地存储