mirror of
https://github.com/NohamR/knowledge-kit.git
synced 2026-05-25 04:17:17 +00:00
docs: 反爬虫之防重放策略
This commit is contained in:
@@ -15,7 +15,8 @@ API 接口存在很多常见的安全性问题,常见的有下面几种情况
|
||||
所以针对上述的问题也有一些解决方案:
|
||||
1. HTTPS 证书的双向认证解决抓包工具问题
|
||||
2. 假如通过网络层高手截获了 HTTPS 加证书认证后的数据,所以需要对请求参数做签名
|
||||
2. 「防重放策略」解决请求的多次发起问题
|
||||
3. 「防重放策略」解决请求的多次发起问题
|
||||
4. 请求参数和返回内容做额外 RSA 加密处理,即使截获,也无法查看到明文。
|
||||
|
||||
关于 HTTPS 证书双向认证和 Web 端反爬虫技术方案均在[大前端时代的安全性](https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter1%20-%20iOS/1.56.md)一文中有具体讲解。接下来引出本文主角:防重放
|
||||
|
||||
@@ -96,7 +97,11 @@ API 接口存在很多常见的安全性问题,常见的有下面几种情况
|
||||
|
||||
## 四、 计算机网络时间同步技术原理
|
||||
|
||||
客户端和服务端的时间同步在很多场景下非常重要,比如秒杀系统(页面打开,各个类目的商品展示倒计时秒杀功能。如果直接请求接口页面数据,然后拿到服务器时间进行倒计时,则会因为网络传输的耗时,导致时间不精确)、接口 timestamp 等。
|
||||
客户端和服务端的时间同步在很多场景下非常重要,举几个例子,这些场景都是经常发生的。
|
||||
- 一个商品秒杀系统。用户打开页面,浏览各个类目的商品,商品列表界面右侧和详情页都有倒计时秒杀功能。用户在详情页加购、下单、结算。发现弹出提示“商品库存不足,请购买同类其他品牌商品”
|
||||
- 一个答题系统,题目是该公司核心竞争力。所以有心的程序员为接口设计了「防重放」功能。但是前端小哥不给力,接口带过去的 timestamp 与服务器不在一个时区,差好几秒。别有用心的竞品公司的爬虫工程师发现了该漏洞,爬取了题目数据。
|
||||
|
||||
所以该现象在计算机领域有非常普遍,有解决方案。
|
||||
|
||||
1. 如果精度要求不高的情况下:先请求服务器上的时间 ServerTime,然后记录下来,同时记录当前的时间 LocalTime1;需要获取当前的时间时,用最新的当前时间 (LocalTime2 - LocalTime1 + ServerTime)
|
||||
|
||||
@@ -109,4 +114,4 @@ API 接口存在很多常见的安全性问题,常见的有下面几种情况
|
||||
|
||||
2. 如果需要精度更高,比如 100纳秒的情况,则需要使用 NTP(Network Time Protocol)网络时间协议、PTP (Precision Time Protocol)精确时间同步协议了。
|
||||
|
||||
NTP、PTP 不在本文的范畴,不懂得可以查看这篇[文章](https://segmentfault.com/a/1190000005337116)
|
||||
NTP、PTP 不在本文的范畴,感兴趣的可以查看这篇[文章](https://segmentfault.com/a/1190000005337116)
|
||||
|
||||
Reference in New Issue
Block a user