接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计,保证接口的数据不会被篡改和重复调用,下面具体来看:算法
Token受权机制:用户使用用户名密码登陆后服务器给客户端返回一个Token(一般是UUID),并将Token-UserId以键值对的形式存放在缓存服务器中。服务端接收到请求后进行Token验证,若是Token不存在,说明请求无效。后端
时间戳超时机制:用户每次请求都带上当前时间的时间戳timestamp,服务端接收到timestamp后跟当前时间进行比对,若是时间差大于必定时间(好比5分钟),则认为该请求失效,这个时间要保证足够完成本次请求的同时尽可能短,能够减小缓存服务器的压力(见签名机制)。api
签名机制:将Token和时间戳加上其余请求参数就行MD5或SHA-1算法(可根据状况加点盐)加密,加密后的数据为本次请求的签名sign,并将该签名存放到缓存服务器中,超时时间设定为跟时间戳的超时时间一致(这就是为何要尽可能短,两者时间一致能够保证不管在timestamp规定时间内仍是外本URL都只能访问一次)。服务端接收到请求后以一样的算法获得签名,并跟当前的签名进行比对,若是不同,说明参数被更改过,直接返回错误标识。同一个签名只能使用一次,若是发现缓存服务器中已经存在了本次签名,则拒绝服务。缓存
1,先后端分离mvvm模式的N宗罪;安全
2,5分钟搞定密码学的对称/非对称加密;服务器
3,接口签名,防止数据篡改之泰斗;cookie
4,用代码告诉你,令牌实现身份认证;前后端分离
5,优雅处理身份认证,让业务代码更6;mvvm
AES,3DES,DES等,适合作大量数据或数据文件的加解密。性能
如RSA,Rabin。公钥加密,私钥解密。对大数据量进行加解密时性能较低。
互联网发展到今天,你们愈来愈重视本身的隐私,各大公司也愈来愈重视数据的安全。传输过程当中的数据安全解决方案主要是“HPPTS”,可以有效防止中间人攻击等。可是API中重要的参数仍是要进行加密,经常使用DES或者AES进行加密。有见过API中密码直接MD5后就行传输,可是MD5在2009年谢涛和冯登国仅用了220.96的碰撞算法复杂度,破解了MD5的碰撞抵抗,该攻击在普通计算机上运行只须要数秒钟,引自[维基百科]。
安全是一个永恒的话题,随着各大网站全站https的推动,安全也愈来愈被重视。签名设计你们必须有,HTTPS但愿你们有。
本文的重点是API的接口安全。须要更详细思惟导图和视频资料的能够评论区留言,我会发送