关于《接口安全》的个人理解

设计安全方案:

没有不安全的业务,只有不安全的实现方式。因为安全方案不能阻碍产品的正常发展。

安全三要素:

机密性:保护数据内容不被泄漏、加密是事实现机密性的常用手段
完整性:没有被篡改
可用性:Dos攻击实际上就是发送大量的无用请求,使得服务器拒绝提供服务,让服务器变的不可用

 

如何实施安全评估:

资产登记划分:互联网安全的核心问题是数据的安全问题。
威胁分析:伪装、篡改、抵赖、信息泄漏、拒绝服务、提升权限
风险分析:DREAD模型分析

接口安全是所有系统中都会面对的问题。当然安全问题,不仅仅是接口安全,还有什么系统安全,数据安全,网络安全等等等。

下图是16年画的,总结起来就是加密和拦截验证:

 

当时个我印象最深刻的还是当时系统接入支付,我看支付宝和微信都是这么干的,自己琢磨了一下还挺好,后来这套思想也被广泛应用了。

Token授权机制:用户使用用户名密码登录后服务器给客户端返回一个Token(通常是UUID),并将Token-UserId以键值对的形式存放在缓存服务器中。服务端接收到请求后进行Token验证,如果Token不存在,说明请求无效。Token是客户端访问服务端的凭证。
时间戳超时机制:用户每次请求都带上当前时间的时间戳timestamp,服务端接收到timestamp后跟当前时间进行比对,如果时间差大于一定时间(比如5分钟),则认为该请求失效。时间戳超时机制是防御DOS攻击的有效手段。
签名机制:将 Token 和 时间戳 加上其他请求参数再用MD5或SHA-1算法(可根据情况加点盐)加密,加密后的数据就是本次请求的签名sign,服务端接收到请求后以同样的算法得到签名,并跟当前的签名进行比对,如果不一样,说明参数被更改过,直接返回错误标识。签名机制保证了数据不会被篡改。
拒绝重复调用(非必须):客户端第一次访问时,将签名sign存放到缓存服务器中,超时时间设定为跟时间戳的超时时间一致,二者时间一致可以保证无论在timestamp限定时间内还是外URL都只能访问一次。如果有人使用同一个URL再次访问,如果发现缓存服务器中已经存在了本次签名,则拒绝服务。如果在缓存中的签名失效的情况下,有人使用同一个URL再次访问,则会被时间戳超时机制拦截。这就是为什么要求时间戳的超时时间要设定为跟时间戳的超时时间一致。拒绝重复调用机制确保URL被别人截获了也无法使用(如抓取数据)。

大概过程如下:

 

 

 

 

 

 

posted @   Eular  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示