前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是跨站请求伪造CSRF

什么是跨站请求伪造CSRF

原创
作者头像
西门呀在吹雪
修改2023-06-02 15:30:50
1980
修改2023-06-02 15:30:50
举报
文章被收录于专栏:架构之巅架构之巅

CSRF 英文全称是 Cross-site request forgery,所以又称为“跨站请求伪造”,是指恶意诱导用户打开被精心构造的网站,在该网站中,利用用户的登录状态发起的跨站请求。简单来讲,CSRF 就是利用了用户的登录状态,并通过被精心构造的网站利用用户正常网站的会话状态来做用户不知情的事情。

典型场景

爱豆打援群号召给偶像打钱捐款

第一步:应援群:

代码语言:javascript
复制
 群主:  请各位粉丝支持爱豆一下,​为他投票吧 ​www.danger.com​​,
 放一张爱豆照片/为了我们爱豆请帮我们点一下下方广告

代码语言:javascript
复制
图片上加上了伪造的超链接,如 <img src=http://www.​ ​ bank​​.com/transfer?to=应援群主&money=100>

一旦点了超链接 ,发现钱少了,一查记录给了群主,群里声讨,被认定为黑粉,被踢出了群聊,芭比kill了。

如何防御

  1. get改post
  2. cookie设置为http-only,secure:lax、strict
  3. 增加refer、hosthttp请求头校验
  4. 增加后端生成的token校验(csrf的token)在ng中相应配置

-----------------------------------

代码语言:javascript
复制
#前提需要在http、server中开启header下划线支持 underscores_in_headers on;否则获取到的header会默认忽略下划线。
#参考:http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers
location ~  .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|woff|woff2|fbx|json|ttf)$ {        
   #参数解析:$http_x_xsrf_token对应的请求中的header名为X-XSRF-TOKEN,在nginx中自定义header使用$http_开头,此处一律使用小写
   if ($http_x_xsrf_token != ''){
        return 404;
   }
    root /web/html;
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 典型场景
  • 如何防御
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档