如何防止API接口被恶意调用

1. 客户端防护

1.客户端双向认证。在app中预置证书(跨平台也是一致的方案),要求更高的话使用专用的证书设备,线下签发,例如银行的U盾。
2.客户端双反hook,反调试,防逆向。
3.客户端运行环境校验,通过读取硬件信息识别pc还是移动设备以及设备MAC相关信息。

2. 传输层防护

1.传输协议防护,首先接口建议使用 HTTPS 协议,这样至少会给破解者在抓包的时候提高一些难度。

3. 服务端防护

1.验证签名与授权信息是否合法,是否失效。
2.参数合法性校验,例如时间戳和参数签名校验。过滤一些非法参数。
3.数据加密,签名可以采用非对称加密,参数采用对称加密,密匙采用非对称的私匙。
4.定时更新签名以及加密信息。
5.接口监控,接口的使用设备,使用频率,调用顺序是否合法。
6.风控策略防护,有一点作用但是对于有明确指向性的攻击意义不大,IP可以换,频率可以变,很容易就绕过了,策略的设计上要注意尽量少用短命的规则,而且一般只对低级别的对抗有效。
7.通过风控平台进行用户行为分析,数据挖掘,然后通过机器学习形成风控模型,对风险进行全方位识别,预警以及管控。

4. 安全鉴权案例

4.1 微盟开放平台

微盟也是根据OAuth2.0授权流程实现。

参数说明
client_id开发者应用用于发起微盟Oauth_2.0授权的凭证(可在“开发者中心”创建应用后获取到)
client_secret开发者应用用于发起微盟Oauth_2.0授权的凭证(可在“开发者中心”创建应用后获取到)
redirect_uri应用发起请求时,所传的回调地址参数,用于接收平台返回的数据
access_token开发者完成授权后,被颁发调用微盟API 的凭证
refresh_token刷新access_token的凭证,当access_token过期时,开发者可以用refresh_token刷新得到新的access_token

微盟鉴权文档地址:https://cloud.weimob.com/saas/word/detail.html?tag=564&menuId=2

4.2 微信开放平台

微信开放平台授权需要7部才能完成,并且在此之前还需要通过开放平台开发配置,数据通过AES加密验证。
1、配置授权事件URL,用于接收[component_verify_ticket]。
2、获得component_verify_ticket后,按照[获取第三方平台 component_access_token]接口文档,调用接口获取component_access_token。
3、获得component_access_token后,按照[获取预授权码 pre_auth_code]接口文档 ,调接口获取pre_auth_code。
4、获得pre_auth_code后,按照[授权技术流程说明]文档 ,引导用户授权后获取authorization_code
5、获得authorization_code后,按照[使用授权码换取公众号或小程序的接口调用凭据和授权信息]接口文档 ,调接口获取authorizer_refresh_token。
6、获得authorizer_refresh_token后,按照[获取/刷新授权公众号或小程序的接口调用凭据]接口文档 ,调接口获取authorizer_access_token。
7、按照接口文档,代替公众号或小程序调用接口。

微信开放平台授权文档地址:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/Before_Develop/creat_token.html

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值