- 概念:Cross-site request forgery,又称跨站请求伪造。主要是利用 cookie 在同源请求中携带发送给服务器的特点,以此来冒充用户
- 攻击类型:
- GET 类型的 CSRF 攻击,比如在网站中的一个 image 标签里构建一个请求,当用户打开这个网站时就会自动发起提交
- POST 类型的 CSRF 攻击,比如构建一个表单,然后隐藏它,当用户进入页面时,自动提交这个表单。
- 链接类型的 CSRF 攻击,比如在 a 标签的 href 属性里构建一个请求,然后诱导用户去点击。
- 如何防止:
- 利用 Cookie 的 SameSite 属性
- 设置 SameSite 为 Strict
- 服务端进行同源检测:
- 服务器根据 http 请求头中 origin 或者 referer 信息来判断请求是否为允许访问的站点,从而对请求进行过滤。
- CSRF token 验证:
- 服务器向用户返回一个随机数 token
- 用户请求时都带上 toen
- 利用 Cookie 的 SameSite 属性