什么是接口?
要想了解接口防刷,首先我们应该要对接口有一个概念。接口,可以分为程序内部的接口:方法与方法、模块与模块之间,通过调用程序内部抛出的接口进行交互;系统对外的接口:通过调用别人提供的接口来获取别人网站或者服务器上的资源或信息。
接口防刷
- 在用户访问接口时获取用户IP,访问一次则访问次数对应加1,并为该访问次数设置有效时间在每次访问时判断访问次数值是否超过设置的最大访问次数,如果是则拒绝该用户访问
- 根据接口的承受能力设置限流,当每秒请求量达到指定阈值时拒绝多余请求
- 给对外接口加验证身份的签名,即在调用接口前对调用者需要传递数据进行加密生成一个签名摘要,在调用时将传递数据再次生成一个新的签名摘要,若两个签名摘要相同则验证通过
- 对http请求头进行头信息的校验
在这里我们介绍一下第三点验证身份签名使用的HMAC算法应用:
- 先由客户端向服务器发出一个验证请求
- 服务器接到此请求后生成一个随机数并通过网络传输给客户端(此为挑战)
- 客户端将收到的随机数与自己的密钥进行HMAC-SHA1运算并得到一个结果作为认证证据传给服务器(此为响应)
- 与此同时,服务器也使用该随机数与存储在服务器数据库中的该客户密钥进行HMAC-SHA1运算,如果服务器的运算结果与客户端传回的响应结果相同,则认为客户端是一个合法用户?
由于九月份刚打完数学建模国赛,感觉论文提交第一步生成的MD5码有第三点验证身份签名的感觉,所以对第三点的签名摘要进行了进一步的了解。
常见的签名加密算法
- MD5算法
- SHA1算法
- HMAC算法
- AES/DES/3DES算法
在这里我们只介绍前两种算法:
MD5算法
MD5消息摘要算法是一种哈希算法,用于在通过不安全通道传输文件时保护数据。 数据包通过加密散列函数传递,以创建消息的压缩映像,称为摘要。无论多长的输入,MD5都会输出长度为128bits的一个串,用以确保信息传输完整一致。
MD5算法是不可逆的,不能通过摘要信息得到原始数据。
MD5特性:
- 压缩性: 对于任意长度的输入, 输出长度总是相同的
- 容易计算:?线性时间复杂度
- 抗修改性: 对原数据的一点点修改都会导致最终结果的巨大变化
- 抗碰撞性: 已知原数据和MD5值很难生成与原数据不同但MD5值相同的数据
SHA1算法
SHA-1算法是目前最常用的安全散列算法和最先进的加密技术。SHA-1算法接收一段明文,对长度不超过2的64次方的消息产生160bits的消息摘要输出。
SHA1特性
- 单向性:由原始消息计算出信息摘要很容易,而由消息摘要计算出原始消息在计算上则几乎是不可行的
- 抗碰撞性:已知原数据和SHA1值很难生成与原数据不同但SHA1值相同的数据
MD5算法与SHN1算法的区别
- MD5 与SHA-1均是从MD4 发展而来
- SHA-1的摘要比MD5 摘要长 32bit。因而,SHA-1对强行攻击的强度更大。
- 由于SHA-1 的循环步骤比MD5 多(80:64)且要处理的缓存大(160 比特:128 比特),SHA-1的运行速度比MD5 慢
|