
最近在做第三方接口对接的一些工作,考虑到交互的安全性也为了不让数据在传输中“裸奔”,所以签名和权鉴是必不可少的了。
21、从登录验证说起
在我们内部项目之间进行的接口调用中一般会用到这种: 用户登录->生成token并保存->接口请求验证token ,这里也可以把token做成全局的用以单点登录。
22、说说使用token验证
① 但是如果我们要对接第三方接口或者向第三方提供接口时,这个模式就使用得比较少一些了。首先,token携带在请求中很多时候已经是一个 明文传输 了,有心的话可以直接进行数据提取然后做一些其他事情(做过爬虫的应该都很熟练哈)。
② 在第三方接口对接时更多的是以加盟或绑定的形式为主,在接口调用之前 很少会做登录的动作 ,而且处于安全性考虑这种方式的安全性也有待进一步提升。
23、解决方案
其实这个问题已经是有比较完备的解决方案了得: 双方约定一个公钥,一个私钥然后按照特定的算法(MD5、SHA256)进行加密生成一个签名 。使用方在接口调用时携带签名及其他数据,提供方在接收到调用时也按照约定进行一次签名的生成,最后会比较两方的数据,如果两方的签名一致则请求检测初步通过,不符合时则拒绝。
31、整体思路
使用特定的签名算法且使用双方都进行生成(其参数包含公钥、时间戳、携带参数)。在我这边接收到请求时先去检测公钥是否在我方的约定池中存在,然后校验 签名一致性、有效时间,最后是参数合法性检测 。其中在中间任何一个环节出现问题即 抛出对应回执信息 。
PS:部分参数可参与签名的算法
32、签名算法
在这里面最重要的就是签名算法了,其 *** 作步骤如下:
① 使用Map接收参数,然后对按照其中的非空参数名的ACCII码从小到大进行排序
② 使用URL键值对的形式(key1=value1&key2=value2)进行字符串拼接
③ 在上述生成的字符串上面拼接私钥得到新的字符串signStr,并对signStr进行SHA256运算得到signShsStr
④ 最后把signShaStr转换成大写,得到最终的签名
41、signBuildUtil
42、SHA256运算
51、在签名中可以让部分重要的参数进行参与
52、使用时间戳并参与签名一方面是增加签名的预测难度也可以作为时间有效性检测的依据
53、最好是有一个良好的文档约定和公钥、私钥的良好维护
网络安全方案,主要从数据加密与api接口安全两个方面考虑,数据加密>
API延迟是指API从请求到响应的过程中所花费的总时间。
API是一组指令、标准或要求,使软件或应用程序可以利用另一应用程序、平台或设备的功能/服务来获得更好的服务。简而言之,它可以让应用程序彼此通信。例如当我们在使用支付宝、微信APP时,都会通过API请求后台服务器上的数据,在APP上进行展示。
API消除了从头开始构建类似程序或平台的需求。您可以使用其他一些应用程序/平台中的现有应用程序。基于这些原因,应用程序开发人员和业务主管都将重点放在API开发上。它使移动应用程序或平台能够与其他应用程序或平台共享其数据,并在不涉及开发人员的情况下简化用户体验。
API的特性
1、修改时间戳/按条件搜索:API应该允许用户根据不同的条件(例如日期)搜索数据,并能对检索的数据进行修改(更新,编辑和删除),并能记录修改的时间戳。
2、分页:当数据量很大的时候,我们不希望每次都获取完整的数据列表。在这种情况下,API应该能够确定一次显示多少数据以及总页数,还应告知最终用户剩余的数据页数。
3、JSON支持/ REST:尽量使用RESTful风格进行有效的API开发。REST API是无状态的,轻量级的。此外JSON的语法类似于大多数编程语言的语法,这使移动应用程序开发人员可以轻松地将其解析为任何其他语言。
以上就是关于关于API接口的签名和权鉴,你知道多少全部的内容,包括:关于API接口的签名和权鉴,你知道多少、API接口安全设计方案(已实现)、API延迟啥意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)