首页 > 编程知识 正文

php接口api,api接口怎么编写

时间:2023-05-04 02:53:08 阅读:156907 作者:1285

定义为在设计API接口时,一般考虑接口的防篡改攻击和防重放攻击。 有关防篡改攻击的信息,请参见我的另一个博客“Java编程: API接口防篡改、签名和验证原理”。 本文主要介绍如何防范重放攻击。

重放攻击(Replay Attacks ),也称为重放攻击,是攻击者发送目标主机接收到的数据包,以达到欺骗系统的目的,主要用于认证过程,破坏了认证的准确性。 重放攻击既可以由发起方进行,也可以由截获该数据并重新发送的敌人进行。 攻击者利用网络监听等窃取认证证书,并将其重新发送到认证服务器。 任何网络路径都可能发生重放攻击,是计算机全球黑客常用的攻击方法之一。 (来自百度百科)。

例如,用户发起带有支付参数的支付请求,攻击者拦截该请求,然后向服务器重复发送该请求。 如果服务器端没有设置防重放攻击策略,则会多次支付,可能会导致用户丢失。

常见的重放攻击防范策略主要分为以下两类。

1、基于timestamp的方案

2、基于token的方案

3、基于timestamp和token的方案

在基于timestamp的方案中,将timestamp参数添加到请求中以表示请求时间戳。 服务器收到该请求后,根据当前时间生成接收时间戳,根据两个时间戳的差值进行请求判定,如果差值大于指定阈值,则认为请求无效,否则请求通过。 阈值的选择可以根据接口的响应速度进行适当调整,但通常默认为60秒。

伪代码如下所示。

if ()接收时间戳-请求时间戳60 ) )“请求失败”) else )“请求通过”)该计划必须使请求和响应双方保持时间同步,如果服务双方在时间上存在差异,则会影响差分值的计算,结果和

缺点:可以看出,上面的判决逻辑允许在低于阈值的时间段内重复请求,并且不能保证请求只有效一次。

基于token的计划将由指定规则生成的token添加到请求中,以标识请求的唯一性。 服务器收到请求后,首先判断缓存集合中是否存在该token,如果存在,则判断本次请求无效,否则将token放入缓存中,使请求通过。

伪代码如下所示。

将token存在于缓存集合中()“请求失败”(else ) token放入集合的“请求通过”)此方案要求token的生成规则具有唯一性,如果token的值重叠,则正常的请求访问

缺点: token存在于缓存中,没有有效期设置。 随着请求量的增加,缓存集合中的token数量非常庞大,会消耗系统大量的内存。 为了解决这个问题,引入了基于timestamp和token的方案。

基于timestamp和token的方案timestamp解决了token方案中缓存集合数据量大的问题,token解决了timestamp方案中的一次性访问问题。 伪代码如下所示。

接收时间戳-请求时间戳(60秒)“请求失败”(if ) )“请求失败”(else ) token置位,缓存时间60秒“请求通过”)防篡改和防重放攻击接口设计

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。