[TOC]
转载地址:https://blog.csdn.net/zhou920786312/article/details/95536556
如何保证外网开放接口的安全性
- 使用加签名方式,防止数据篡改
- 信息加密与密钥管理
- 搭建OAuth2.0认证授权
- 使用令牌方式
- 搭建网关实现黑名单和白名单
一. 令牌方式搭建搭建API开放平台
方案设计:
- 第三方机构申请一个appId,通过appId去获取accessToken,每次请求获取accessToken都要把老的accessToken删掉
- 第三方机构请求数据需要加上accessToken参数,每次业务处理中心执行业务前,先去dba持久层查看accessToken是否存在(可以把accessToken放到redis中,这样有个过期时间的效果),存在就说明这个机构是合法,无需要登录就可以请求业务数据。不存在说明这个机构是非法的,不返回业务数据。
- 好处:无状态设计,每次请求保证都是在我们持久层保存的机构的请求,如果有人盗用我们accessToken,可以重新申请一个新的taken.
二. 基于OAuth2.0协议方式
原理
第三方授权,原理和1的令牌方式一样
- 假设我是服务提供者A,我有开发接口,外部机构B请求A的接口必须申请自己的appid(B机构id)
- 当B要调用A接口查某个用户信息的时候,需要对应用户授权,告诉A,我愿同意把我的信息告诉B,A生产一个授权token给B。
- B使用token获取某个用户的信息。
联合微信登录总体处理流程
- 用户同意授权,获取code
- 通过code换取网页授权access_token
- 通过access_token获取用户openId
- 通过openId获取用户信息
三. 信息加密与密钥管理
- 单向散列加密
- 对称加密
- 非对称加密
- 安全密钥管理
非对称加密
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。
公钥与私钥是一对
- 公钥对数据进行加密,只有用对应的私钥才能解密
- 私钥对数据进行加密,只有用对应的公钥才能解密
过程:
- 甲方生成一对密钥,并将公钥公开,乙方使用该甲方的公钥对机密信息进行加密后再发送给甲方;
- 甲方用自己私钥对加密后的信息进行解密。
- 甲方想要回复乙方时,使用乙方的公钥对数据进行加密
- 乙方使用自己的私钥来进行解密。
甲方只能用其私钥解密由其公钥加密后的任何信息。
特点:
- 算法强度复杂
- 保密性比较好
- 加密解密速度没有对称加密解密的速度快。
- 对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多
- 适用于:金融,支付领域
四. 使用加签名方式,防止数据篡改
- 客户端:请求的数据分为2部分(业务参数,签名参数),签名参数=md5(业务参数)
- 服务端: 验证md5(业务参数)是否与签名参数相同
「真诚赞赏,手留余香」