CRSF 攻击的原理和防护方式是什么?


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