XSRF 又名为 CSRF, 跨站请求伪造,是一种前端常见的一种攻击方式。 大概的攻击原理:
- 浏览并登陆信任网站A
- 验证通过,在用户C产生A的cookie
- 用户在没有登出的情况下访问攻击网站B
- B要求访问第三方网站A,发出一个请求
- 根据B在4的请求,浏览器带着2产生的cookie访问A
- A不知道5中的请求是C发出的还是B发出的,由于浏览器会自动带上C的cookie,所以A会根据用户的权限处理5的请求,这样B就达到了模拟用户操作的目的
CSRF 的防御手段有很多,比如验证请求的 referer,但是 referer 也是可以伪造的,所以杜绝此类攻击的一种方式是服务端要求每次请求都包含一个token,这个token不在前端生成,而是在我们每次访问站点的时候生成,并通过set-cookie的方式种到客户端,然后客户端就可以从请求headers中读取这个token并验证,由于这个token是很难伪造的,所以能区分这个请求是否是用户正常发起的