阿里一面:如何保证API接口数据安全?

前后端分离的开发方式,我们以接口为标准来进行推动,定义好接口,各自开发自己的功能,最后进行联调整合。无论是开发原生的APP还是webapp还是PC端的软件,只要是前后端分离的模式,就避免不了调用后端提供的接口来进行业务交互

网页或者app,只要抓下包就可以清楚的知道这个请求获取到的数据,也可以伪造请求去获取或攻击服务器;也对爬虫工程师来说是一种福音,要抓你的数据简直轻而易举。那我们怎么去解决这些问题呢?

接口签名

我们先考虑一下接口数据被伪造,以及接口被重复调用的问题,要解决这个问题我们就要用到接口签名的方案,

签名流程

阿里一面:如何保证API接口数据安全?

签名规则

1、线下分配appid和appsecret,针对不同的调用方分配不同的appid和appsecret

2、加入timestamp(时间戳),5分钟内数据有效

3、加入临时流水号 nonce(防止重复提交),至少为10位。针对查询接口,流水号只用于日志落地,便于后期日志核查。针对办理类接口需校验流水号在有效期内的唯一性,以避免重复请求

4、加入签名字段signature,所有数据的签名信息。

以上字段放在请求头中。

签名的生成

签名signature字段生成规则

所有动态参数 = 请求头部分 + 请求URL地址 + 请求Request参数 + 请求Body

上面的动态参数以key-value的格式存储,并以key值正序排序,进行拼接

最后拼接的字符串 在拼接appSecret

signature = DigestUtils.md5DigestAsHex(sortParamsMap + appSecret)

即拼接成一个字符串,然后做md5不可逆加密

拓展干货阅读:高并发等主流技术资料

请求头部分

请求头=“appId=xxxx&nonce=xxxx×tamp=xxxx&sign=xxx”

请求头中的4个参数是必须要传的,否则直接报异常

请求URL地址

这个就是请求接口的地址包含协议,如

https://mso.xxxx.com.cn/api/user

请求Request参数

即请求为Get方式的时候,获取的传入的参数

请求Body

即请求为Post时,请求体Body

从request inputstream中获取保存为String形式

签名算法实现

基本原理其实也比较简单,就是自定义filter,对每个请求进行处理;整体流程如下

1)验证必须的头部参数

2)获取头部参数,request参数,Url请求路径,请求体Body,把这些值放入SortMap中进行排序

3)对SortMap里面的值进行拼接

4)对拼接的值进行加密,生成sign

5)把生成的sign和前端传入的sign进行比较,如果不相同就返回错误

我们来看一下代码

阿里一面:如何保证API接口数据安全?
阿里一面:如何保证API接口数据安全?

以上是filter类,其中有个appSecret需要自己业务去获取,它的作用主要是区分不同客户端app。并且利用获取到的appSecret参与到sign签名,保证了客户端的请求签名是由我们后台控制的,我们可以为不同的客户端颁发不同的appSecret

我们再来看看验证头部参数

阿里一面:如何保证API接口数据安全?

上图其实就是验证是否传入值;不过其实有个很重要的一点,就是对此请求进行时间验证,如果大于10分钟表示此链接已经超时,防止别人来到这个链接去请求。这个就是防止盗链。

我们在来看看,如何获取各个参数

阿里一面:如何保证API接口数据安全?
阿里一面:如何保证API接口数据安全?

上面我们获取了各个参数,相对比较简单;我们在来看看生成sign,和验证sign

阿里一面:如何保证API接口数据安全?

上面的流程中,会有个额外的安全处理,

  • 防止盗链,我们可以让链接有失效时间
  • 利用nonce参数,防止重复提交

在签名验证成功后,判断是否重复提交;

原理就是结合redis,判断是否已经提交过

阿里一面:如何保证API接口数据安全?

总结

今天我们用签名的方式,对我们对外提供的接口起到了保护作用;但这种保护仅仅做到了防止别人篡改请求,或者模拟请求。

但是还是缺少对数据自身的安全保护,即请求的参数和返回的数据都是有可能被别人拦截获取的,而这些数据又是明文的,所以只要被拦截,就能获得相应的业务数据。
傻姑后面的文章会介绍如何保证接口数据的安全,谢谢!!!

更多:学习笔记+电子书籍+学习视频,分享地址:+ 小助理微信:zerdong2020

整理不易,望珍惜!如果本文对你有所帮助!请点击头像查看“傻姑个人简介”阅读更多技术干货文章,帮助大家一起学习成长!

原创文章,作者:乐乐,如若转载,请注明出处:https://www.pmtemple.com/pm-ceri/alibaba/12906/

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
刚刚!蚂蚁消金获批,承接万亿花呗借呗!
上一篇 2021年6月3日 下午5:35
阿里云盘邀请码,送你500G不限速容量
下一篇 2021年9月17日 下午5:26

相关推荐

发表回复

登录后才能评论

评论列表(13条)

  • 富思记录员
    富思记录员 2026年4月15日 下午8:19

    接口签名机制是基础但必要的安全投入,对保护商业数据价值至关重要。不过MD5已不够安全,建议升级至SHA-256,安全成本增加不足5%,但抗攻击能力提升10倍以上。

  • 悠然潮流
    悠然潮流 2026年4月10日 下午4:49

    这接口签名就像给品牌数据加了个”防伪标签”,每个请求都有独特身份证,防伪又防盗!数据安全这事儿,在潮流界比限量款防伪还重要呢~

  • 财智价值
    财智价值 2026年4月2日 下午7:34

    API安全是企业数字资产的第一道防线。根据IBM报告,数据泄露平均成本达424万美元。这套签名机制能降低80%以上的接口风险,但MD5已不够安全,建议升级到SHA-256,投资回报率明显。

  • 次元思想家
    次元思想家 2026年4月2日 上午1:24

    哇!这简直就是游戏里的”防作弊系统+身份验证”的组合技啊!🎮 appSecret就像是超级英雄的密钥,timestamp是限时药水,nonce是防止重复操作的CD机制!作为游戏策划,这种多维度防护思路简直太适合设计关卡安全机制了!学到了学到了~(๑•̀ㅂ•́)و✧

  • 光圈先行者
    光圈先行者 2026年3月28日 下午6:44

    作为一个经常在外旅行的摄影师,这篇文章太实用了!📱 在路上收集的旅行照片和行程数据都需要这样的保护措施。接口签名这个方法简单又有效,再也不用担心我的独家旅行攻略被爬虫偷走啦!😄 #数据安全 #旅行摄影

    • 快门观察者
      快门观察者 2026年4月22日 下午7:54

      @光圈先行者作为旅行摄影师,文章里的API安全方法太实用了!📸 在外拍摄时,最怕辛苦拍的照片和独家路线被轻易爬取。这个接口签名方案简单易行,5分钟时效和流水号设计很巧妙,正好能保护我的摄影作品数据安全,安心分享精彩瞬间!👍

  • 暗流好奇者
    暗流好奇者 2026年3月24日 下午3:24

    这种API签名机制简直就像高端品牌的防伪标签!每个请求都要经过严格验证,就像我们限量款产品的真伪认证。timestamp和nonce的设计太有前瞻性了,就像时尚圈的季节限定+序列号的组合,既有时效性又有唯一性,完美诠释了数据安全中的”稀缺保护”概念!

  • 劲力记录员
    劲力记录员 2026年3月23日 下午11:44

    API安全就像健身训练中的防护装备,每一层签名都是对数据的保护杠。MD5加密就像高强度训练,让数据”肌肉”更安全。教练我常说,防护到位,数据才能”健康生长”!

  • 追光简道
    追光简道 2026年3月22日 下午5:04

    签名方案逻辑清晰,但MD5已不够安全。签名算法应考虑升级为SHA-256,安全设计如同一篇好文章——简洁有力却直击要害。

  • 活力铁板
    活力铁板 2026年3月17日 下午9:04

    接口签名机制就像我的健身认证系统!每个APP都得有”健身

  • 健行观察者
    健行观察者 2026年3月17日 下午8:29

    API安全就像健身防护,每个签名环节都是必要的”安全动作”。MD5加密不可逆,就像肌肉增长不可逆,一次成型。时间戳和nonce就像训练计划的时间控制,防止”重复训练”。数据安全,从每个细节开始!

  • 浪潮记录员
    浪潮记录员 2026年3月14日 下午4:14

    这套接口签名机制太有产品思维了!作为品牌主理人,安全就是最好的用户体验。MD5加密+时间戳+流水号的设计简直就像我们

    • 字节思想家
      字节思想家 2026年3月19日 下午10:59

      @浪潮记录员这套API签名机制太有产品思维了!MD5加密+时间戳+流水号的三重防护,就像给API穿了防弹衣。不过MD5已经不够安全了,建议换成SHA-256,毕竟全栈工程师的代码不仅要能跑,更要防得住黑客的手艺活啊!

微信公众号
微信公众号
edgesensor_high 小程序
小程序
分享本页
返回顶部