一篇搞b站的文章

loop_0 · · 2370 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

## 一篇搞b站的文章 ### `csrf`攻击简述: * `CSRF`(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:`CSRF/XSRF` * 你这可以这么理解`CSRF`攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。 * 具体原理就不详细解释了推荐一篇文章:[浅谈CSRF攻击方式](https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html) * 了解过`csrf`攻击, 我们应该明白, 所谓的`csrf`攻击就是: * 你在你的常用网站登录了 * 此时被`xxx`恶意网站的连接吸引, 访问`xxx`恶意网站 * `xxx`恶意网站的页面向的常用网站发起跨域请求 * 跨域请求中携带了常用网站的cookie, 盗用了你的登录状态 ### `csrf`思路分析: 浏览器支持的跨域请求的方式大体有两种: * `cros` 官方标准, 使用时需要服务端支持, 否则会有请求方法和header限制(header限制不能携带cookie),有两种请求方式这里不做过多介绍, 依然推荐一篇文章:[跨域资源共享 CORS 详解](http://www.ruanyifeng.com/blog/2016/04/cors.html),总之`cros`很安全。 * `jsonp` 方式, 限制是只能使用GET请求(规范GET请求都是只读操作), body中无法携带数据。 ### 网络上`open某li某li`的`csrf`防御 * 全局的`jsonp CSRF`防御: ![全局-csrf防御.PNG](https://static.studygolang.com/200514/f612352719e47599322755580d02148e.PNG) * 首先需要知道的一点是, `jsonp` 方式发起的跨域请求`header`中一定有`referer`字段 * 如果请求没有携带`referer`判断是不是`jsonp`请求, 一般不是大概, 双重保障判断一下, 如果不是方行, 恩, 方便接口测试, 也方便了网络爬虫, 代码作者:"我是`csrf防御`, 网络爬虫关我何事? " 恩, 合情合理. * 如果请求携带`referer`则检测`domin`是不是允许的那些`domain`, 如 `bilibili.com`, 完美防御`jsonp`原理进行的跨域攻击. * 笔者目前并未找到b站上的`jsonp`接口, 未提供`jsonp`接口依然要检测`jsonp csrf`, 可见b站的安全意识很高, 这样做的好处也是可以防止不小心在GET请求接口中做了敏感的写操作而产生的web漏洞. * `jsonp` out. * `cros` 跨域 ![cros.PNG](https://static.studygolang.com/200514/4bc37d55938a217397cbc6c736533f7a.PNG) * 笔者目前看到的接口都是通过`cros`简单请求的方式跨域, `api getway`同样也实现了非简单方式的跨域请求 * `cros`的`Origin`验证机制也有好好实现 * `cros`官方的跨域规范, 安全性很好, 理所应当out. * 用户登录验证`CSRF`防御 ![用户登录验证-csrf防御.png](https://static.studygolang.com/200514/0245274b981023198985cb3af7d73fe6.png) * 笔者不解的, 这段代码应该是对盗用用户登录状态的 `cros`跨域请进行的防御, 而个人感觉`cros`的`Origin`验证机制已经很健全了呀, 双重保障?笔者知识盲区?未知的跨域攻击? * `unknown csrf` out. * 最后一道防御 * 良好的编码规范 * `crsf` out ### 结束 * `bilibili`的跨域攻击的应对做的很完善, 所以阿宅们大可放心, 在浏览b站时点开各种小连接, xx图(deprecated), 这些都是没问题哒 * 今日的胜负: `bilibili` 完胜 * 引用: * 浅谈`CSRF`攻击方式:https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html * 跨域资源共享`CORS` 详解:http://www.ruanyifeng.com/blog/2016/04/cors.html * [github](https://github.com/loop-xxx)

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2370 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传