美文网首页
接口安全方法

接口安全方法

作者: yaoyao_IOS | 来源:发表于2017-07-26 10:45 被阅读149次

服务端对外开放API接口,尤其对移动应用开放接口的时候,更需要关注接口安全性的问题,要确保应用APP与API之间的安全通信,防止数据被恶意篡改等攻击。

根据业务特点,采用的安全策略也不全相同。当然大多数安全策略更多的都是提高安全门槛,并不能保证100%的安全,但该做的还是不能少。下面就简单列举几种措施来对付接口安全问题。

HTTPS

HTTPS能够有效防止中间人攻击,有效保证接口不被劫持,对数据窃取篡改做了安全防范。但HTTP升级HTTPS会带来更多的握手,而握手中的运算会带来更多的性能消耗。这也是不得不考虑的问题。


Token机制

开放接口时最基本需要考虑到接口不应该被别人随意访问,而我也不能随意访问到其他用户的数据,从而保证用户与用户之间的数据隔离。这个时候我们就有必要引入Token机制了。

具体的做法: 在用户成功登录时,系统可以返回客户端一个Token,后续客户端调用服务端的接口,都需要带上Token,而服务端需要校验客户端Token的合法性。Token不一致的情况下,服务端需要拦截该请求。


对数据进行校验

服务端从某种层面来说需要验证接受到数据是否和客户端发来的数据是否一致,要验证数据在传输过程中有没有被注入攻击。这时候客户端和服务端就有必要做签名和验签。

具体的做法: 客户端对所有请求服务端接口参数做加密生成签名,并将签名作为请求参数一并传到服务端,服务端接受到请求同时要做验签的操作,对称加密对请求参数生成签名,并与客户端传过来的签名进行比对,如签名不一致,服务端需要拦截该请求

签名和加密流程:
1.将请求参数按照a-z排序后,用key=value&key=value拼接,得到待签名字符串;
2.使用自己的私钥,将待签名字符串进行RSA签名,得到签名参数sign;
3.将所有参数转化为json字符串,得到所有参数json字符串明文info;
4.随机生成16位的AES密钥key,用AES加密明文info,得到密文data参数;
5.将AES密钥key,使用别人的公钥RSA加密,得到密文dataKey参数;

示例:
原始请求:www.baidu.com?bbb=222&aaa=111;
1.参数排序后:aaa=111&bbb=222
2.RSA签名得到sign=OCr1gGGlPi9jDOUhTmIRdgQuWgHPZcokhuIDs
3.参数json字符串:{"sign":"OCr1gGGlPi9jDOUhTmIRdgQuWgHPZcokhuIDs","aaa":111,"bbb":"222"}
4.data=C8BkH63OOEVy
5.dataKey=IF4z2fxeGLOgtd

过载保护

服务端仍然需要识别一些恶意请求,防止接口被一些丧心病狂的人玩坏。对接口访问频率设置一定阈值,对超过阈值的请求进行屏蔽及预警。


异常封装

服务端需要构建异常统一处理框架,将服务可能出现的异常做统一封装,返回固定的code与msg,防止程序堆栈信息暴露。

相关文章

  • 接口安全方法

    服务端对外开放API接口,尤其对移动应用开放接口的时候,更需要关注接口安全性的问题,要确保应用APP与API之间的...

  • kotlin - 学习笔记

    变量 条件 循环 异常 null 空安全 类 接口 类扩展方法 with 变量 条件 循环 异常 null 空安全...

  • RESTFul API设计

    要定义一个严谨的REST统一接口,就需要真正理解HTTP方法的安全性和幂等性。安全性代表安全的REST接口,是指外...

  • 记一次重写RequestMappingHandlerMappin

    近期公司的产品做了一次安全审查,发现后端提供的接口有不安全的Http方法漏洞。不安全的HTTP方法一般包括:TRA...

  • 2020-07-27 同步方法解决线程安全问题

    2.同步方法 1.使用同步方法解决实现Runnable接口方法解决线程同步安全问题 2.使用同步方法解决继承Thr...

  • SpringBoot系列之RestTemplate调https接

    业务:本系统接口都是http的,调用第三方接口,因为做了安全性校验,所以不能通过RestTemplate调用 方法...

  • 使用异或实现对String字符串的加密解密

    为了保证程序的安全,经常采用数据加密的方法。Java 中提供了专门用于加密运算的类和接口。 除了使用加密类和接口外...

  • 安全接口

    个人总结接口安全需要注意以下几点 一、避免明文: post —— post、get等请求方式只是语义不同,本质都是...

  • 接口安全

    接口安全问题 请求身份是否合法? 请求参数是否被篡改? 请求是否唯一? AccessKey&SecretKey (...

  • 接口安全

    接口安全要求: 防伪装攻击(案例:在公共网络环境中,第三方 有意或恶意 的调用我们的接口) 防篡改攻击(案例:在公...

网友评论

      本文标题:接口安全方法

      本文链接:https://www.haomeiwen.com/subject/phynkxtx.html