docs: 大前端数据安全方案价值思考

This commit is contained in:
LiuBinPeng
2021-09-18 01:14:35 +08:00
parent 55a89dc4a5
commit 91c79d8993
4 changed files with 40 additions and 7 deletions

View File

@@ -505,7 +505,7 @@
#### 关键步骤
关键步骤
1. 先根据你们的产品找到常用的关键词,生成**词云**
2. 根据词云,将每个字生成对应的 unicode 码
@@ -574,7 +574,7 @@ h3,a{
## [Demo 地址](https://github.com/FantasticLBP/Anti-WebSpider)
[Demo 地址](https://github.com/FantasticLBP/Anti-WebSpider)
![效果演示](https://raw.githubusercontent.com/FantasticLBP/Anti-WebSpider/master/Anti-WebSpider.gif)
@@ -600,8 +600,23 @@ $ node app.js
## 五、价值和思考
### 五、 App 端安全的解决方案
其实经常有很多来自不同端的开发者和我聊安全问题。交流下来发现有些人可以明白设计的有点,有些人还是没有明白。这里我总结下:
- 爬虫与反爬技术,没有终点。都是需要在衡量 ROI 的情况下, 找到符合业务、技术现状的“最佳”解决方案
- 每次刷新,页面显示的数据固定,但是网络接口数据、审查元素看到的数据,都是不断变化的。且汉字字符、数字字符都不一样
- OCR 可以爬取数据,但是成本较高。同样可以利用其他策略,比如同一个浏览器 canvas 指纹的情况下,短时间多次请求某些数据,则认为是非法行为,可以延迟返回数据、返回错误数据、账号封锁等策略
爬虫工程师要么从接口爬取数据、要么观察分析页面结构找到目标数据的 xPath 获取 DOM 节点对应的数据。从这2个角度出发当前的设计方案解决了该问题
可能有些人就会问:**爬虫工程师一般会不需要关心技术如何实现,直接用无头浏览器“原封不动”的去请求,直接拿到数据不就好了**
其实你仔细想想,无头浏览器是可以去请求,但是本质上就是对数据的只读而已。因为该方案的设计就是基于:**字体文件映射 + 数据线性加密**。**无头浏览器拿到的数据其实和审查元素看到的 DOM 节点内的数据是一个效果的。所以是无效数据。**
## 六、 App 端安全的解决方案
目前 App 的网络通信基本都是用 HTTPS 的服务,但是随便一个抓包工具都是可以看到 HTTPS 接口的详细数据,为了做到防止抓包和无法模拟接口的情况,我们采取以下措施:
@@ -670,17 +685,19 @@ $ node app.js
但是私钥在本地如何存放呢?想到的办法就是将关键密钥的字符串提高到较高的安全级别,比如这个文件用加密保存。接下来推荐一个[工具](https://github.com/RNCryptor/RNCryptor),可以将代码文件进行加密保存和解密访问。
还有:数据加密、压缩 + 自定义报文
## 六、 数据安全(反爬虫)之「防重放」策略
## 七、 数据安全(反爬虫)之「防重放」策略
虽然话题都是大前端时代的安全性,但是防重放策略篇幅较长,开了新的[章节](https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter3%20-%20Server/3.8.md)。感兴趣的同学请移步查看。
## 、Canvas 反爬虫技术方案
## 、Canvas 反爬虫技术方案
> 后期打到白热化的时候用的技术越来越匪夷所思。举个例子很多人会提做反爬虫会用到canvas指纹并认为是最高境界。其实这个东西对于反爬虫来说也只是个辅助canvas指纹的含义是因为不同硬件对canvas支持不同因此你只要画一个很复杂的canvas那么得出的image总是存在像素级别的误差。考虑到爬虫代码都是统一的就算起selenium也是ghost的因此指纹一般都是一致的因此绕过几率非常低。<br><br>但是这个东西天生有两个缺陷。第一是无法验证合法性。当然了你可以用非对称加密来保证合法但是这个并不靠谱。其次canvas的冲突概率非常高远远不是作者宣称的那样冲突率极低。也许在国外冲突是比较低因为国外的语言比较多。但是国内公司通常是IT统一装机无论是软件还是硬件都惊人的一致。我们测试canvas指纹的时候在携程内部随便找了20多台机器得出的指纹都完全一样一丁点差别都没有。因此有些“高级技巧”其实一点都不实用。<br><br>浏览器指纹技术常用于客户端跟踪及反机器人的场景。核心思路是, 不同浏览器、操作系统、以及操作系统环境会使得canvas的同一绘图操作流程产生不同的结果。如果是相同的运行环境同一套Canvas操作流程会产生相同的结果。 浏览器指纹的优势是不需要浏览器保持本地状态,即可跟踪浏览器。 由于国内特色的Ghost系统安装这种方式的误杀率并不低。