加入收藏 | 设为首页 | 会员中心 | 我要投稿 驾考网 (https://www.jiakaowang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 通讯 > 正文

SpringBoo怎么保证接口安全

发布时间:2023-02-27 11:21:43 所属栏目:通讯 来源:
导读:  网络连接,只要你系统的接口暴露于外网,就避免不了接口安全问题。如果你的接口在外网裸奔,只要知道接口的地址和参数就可以调用,对于此那简直就是一场灾难。

  那如何保证接口安全呢?

  一般来说,
     网络连接,只要你系统的接口暴露于外网,就避免不了接口安全问题。如果你的接口在外网裸奔,只要知道接口的地址和参数就可以调用,对于此那简直就是一场灾难。

  那如何保证接口安全呢?

  一般来说,暴露在外网的api接口需要做到防篡改和防重放才能称之为安全的接口。

  如何解决

  采用https协议可以将传输的明文进行加密,但是黑客仍然可以截获传输的数据,进一步伪造请求进行重放攻击。如果黑客使用特殊手段让请求方设备使用了伪造的证书进行通信,那么https加密的内容也会被解密。

  一般的做法有2种:

  采用https方式把接口的数据进行加密传输,即便是被黑客破解,黑客也会花费大量的时间和精力去破解。

  接口后台对接口的请求参数进行验证,防止被黑客篡改;

  步骤1:客户端使用约定好的秘钥对传输的参数进行加密,得到签名值sign1,并且将签名值也放入请求的参数中,发送请求给服务端

  步骤2:服务端接收到客户端的请求,然后使用约定好的秘钥对请求的参数再次进行签名,得到签名值sign2。

  步骤3:服务端比对sign1和sign2的值,如果不一致,就认定为被篡改,非法请求。

  防重放

  防重放也叫防复用。简单来说就是我获取到这个请求的信息之后什么也不改,,直接拿着接口的参数 重复请求这个充值的接口。此时我的请求是合法的, 因为所有参数都是跟合法请求一模一样的。重放攻击会造成两种后果:

  针对插入数据库接口:重放攻击,会出现大量重复数据,甚至垃圾数据会把数据库撑爆。

  针对查询的接口:黑客一般是重点攻击慢查询接口,例如一个慢查询接口1s,只要黑客发起重放攻击,就必然造成系统被拖垮,数据库查询被阻塞死。

  对于重放攻击一般有两种做法:

  基于timestamp的方案

  每次HTTP请求,都需要加上timestamp参数,然后把timestamp和其他参数一起进行数字签名。因为一次正常的HTTP请求,从发出到达服务器一般都不会超过60s,所以服务器收到HTTP请求之后,首先判断时间戳参数与当前时间比较,是否超过了60s,如果超过了则认为是非法请求。

  一般情况下,黑客从抓包重放请求耗时远远超过了60s,所以此时请求中的timestamp参数已经失效了。如果黑客修改timestamp参数为当前的时间戳,则sign1参数对应的数字签名就会失效,因为黑客不知道签名秘钥,没有办法生成新的数字签名。

  去 redis 中查找是否有 key 为 nonce:{nonce} 的 string

  如果没有,则创建这个 key,把这个 key 失效的时间和验证 timestamp 失效的时间一致,比如是 60s。

  如果有,说明这个 key 在 60s 内已经被使用了,那么这个请求就可以判断为重放请求。这个请求就可以判断为重放请求。如果key没有被使用,那么这个请求就不是重放请求,因为它不会占用系统资源,所以不会影响系统正常运行。
 

(编辑:驾考网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章