有效的接口安全措施

仅抛砖引玉没做详说望各位同僚体恤,但有经验的同僚肯定是一点即破甚至举一反三的,而对于安全设计没有所谓的标准只要更安全!您觉得是吧?

   个人认为接口做安全了至少有下面几个好处:

1.大可不用https,不用繁琐配置SSL,不用付证书费,最重要是规避了使用https导致的性能问题,您爽公司更爽
2.保护敏感数据
3.防止攻击、篡改数据
4.杜绝非法大规模请求消耗服务器性能

主要采用的几个安全措施
1.加密机制
2.数字签名机制
3.token机制
4.超时机制

接口工作流程图:

接口流程.png

采用这个方法,接口和APP双方要预先约定两个私钥,双方必须一致。比如下面2个:
加签私钥:
@"abc69801234564567866AACD”

加密私钥:
@“99661234564567866AACDabc”

1).加密机制
接口和app约定对称加密方式,对请求参数进行加密,服务器收到请求先解密数据以得到请求参数明文,接着验证签名,接着检测是否超时
常用对称加密方式有:3DES、DES、AES

请求地址:
http://app.texst.com/gnt/auth/codeing:{密文参数,解密后是json格式数据,以便接口解析数据}

请求参数(加密前的json)
@{
@"token" : @“DFSA546RTR2T1ER3DF89T5ET”, //token
@"posttime" : @“20170820133336”, //时间戳,获取手机当前时间
@"sign" : @“IOPIPIOKLK54LL45JKL15K4596”, //MD5签名串
@"loanId" : @“9279186365”,
@"applyAmt" : @“300000.62”,
@"extensionTerm" : @“12”
};

2).数字签名机制
app每个请求都附送sign和posttime,接口根据posttime换算出sign后与请求参数中的sign校验(对比),如一致表示签名成功,否则签名无效,不相应请求
加签串(MD5)算法 = posttime时间戳 + 加签私钥
郑重声明:MD5不是加密算法,是信息摘要技术,经常看到许多网友发帖不负责任的说什么什么“MD5加密”之类的话,严重误导后生子弟.
MD5犹如人的手指指纹,每个人都有世界独一无二的指纹,根据指纹可以“识别”某个人,但根据指纹却无法“还原制造”出某个人原型,所以MD5是不可逆的,无法逆向还原的,非对称。

3).token机制
请求之后后台返回token令牌,之后每次请求必须附送token,否则请求无效

4).超时机制
后台根据“时间戳”检验请求时间超出约定的N分钟则认为无效

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容