仅抛砖引玉没做详说望各位同僚体恤,但有经验的同僚肯定是一点即破甚至举一反三的,而对于安全设计没有所谓的标准只要更安全!您觉得是吧?
个人认为接口做安全了至少有下面几个好处:
1.大可不用https,不用繁琐配置SSL,不用付证书费,最重要是规避了使用https导致的性能问题,您爽公司更爽
2.保护敏感数据
3.防止攻击、篡改数据
4.杜绝非法大规模请求消耗服务器性能
主要采用的几个安全措施
1.加密机制
2.数字签名机制
3.token机制
4.超时机制
接口工作流程图:
采用这个方法,接口和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分钟则认为无效