WebApi框架数据安全、信息安全与接口安全六大机制
WebApi框架数据安全、信息安全与接口安全六大机制
扫一扫加微信
WebApi框架数据安全、信息安全与接口安全六大机制
一、Token机制
Token:令牌,访问接口的身份标识。
每次登录系统生成一个标识,存储在Api_UserToken表。 有过期特征,若要维持Token不过期,要保持访问接口活动状态。因此访问接口时会刷新当前用户的活动时间,重置初始状态。类似心跳机制。
Token过期:web.config设置,TokenExpireMinutes参数(默认值5分钟)。
若api_user表的TokenExpires=null, 则取web.config的TokenExpiresMinutes参数。
应用:手机APP程序、Web系统, 基于C/S架构的WCF服务。
Web端或移动端,访问接口要传递令牌参数。
WebApi Token相关参考文章:
基于Web前端用户调用CSFramework.WebApi服务端登录登出接口实现
CSFramework.WebApi令牌管理器(Token Provider)实现添加、删除、刷新令牌过期控制
CSFramework.WebApi后端服务器框架:客户端调用WebApi接口方式(签名+Token令牌)
CSFramework.WebApi开发框架模拟Web用户端登录、调用WebApi接口增删改查数据
CSFramework.WebApi后端框架Token令牌工作机制以及Token刷新原理
WebApi开发框架:Token生成、Token缓存原理、Token验证、令牌机制与原理
二、ApiKey(公钥)Secret Key(私钥)
ApiKey(公钥)开发者编号
给应用程序开发者分配的公钥(用户身份证,唯一标识, 明文传输), 提供给:平台的合作伙伴、供应商、客户等。
比如我们的WebApi服务器,要开放接口给客户使用,分配给喜鹊科技一个Apikey:
公钥:5A02D19B-0397-497E-87EF-B4C8263F741E
私钥:6A02D19B-0397-497E-87EF-B4C826366666
安全机制:当用户访问接口时,最先判断ApiKey是否在WebApi服务器存在!!!
HTTPPOST: act.aspx?apikey=5A02D19B-0397-497E-87EF-B4C8263F741E
SecreKey(私钥):用于数字签名,MD5加密。
私钥的特点:WebAPI接口不传输参数,公钥和私钥是1对1,一个公钥配对一个私钥。
ApiKey表(Api_UserKeys表)
三、平台用户表(Api_User)
平台用户表用于管理和维护系统登录账号,登录用户。根据手机号、密码、登录时间等信息以及用户登录登出时间可以分析用户行为。
通过Status状态可以锁定用户禁止登录。
TokenExpires:Token过期时间(minutes), 15分、7天,15天,月,用不过期。
四、数据签名、加密
WebApi接口的数字签名(Data Sign)机制
WebApi接口的数字签名用于接口数据安全以及用户认证防篡改。
防篡改,顾名思义就是防止有人恶意篡改请求数据以达到恶意攻击的目的。
基本原理:
将要请求的数据加上ApiKey(公钥)、SecreKey(私钥),按规则组织成一个字符串,获取对应的MD5摘要,然后将该摘要及公钥同时作为请求的参数一起传递(私钥禁止传递)给WebApi服务器。
基本流程:
1. 客户端数字签名(MD5数据加密)
格式:partner=公钥&orderNo=业务数据&sign=MD5签名
格式:partner=3122131212&orderNo=1234567&sign=EBFE84D02E8E40952899EE5CDFE5404C
签名算法:MD5(partner+orderNo+私钥), MD5三个参数的值。
2. 服务端签名校验(解密)
首先通过请求的ApiKey获取对应的私钥,然后通过上述签名算法计算MD5值,
对比请求的sign参数与计算结果是否一致,若不一致,数据被篡改。
JSON Code:
{
Apikey: 5A02D19B-0397-497E-87EF-B4C8263F741E
Data:“我要获取数据”
Sign: 8dfa959cd5db1ead40a29c56cfe176ec
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
Apikey: 5A02D19B-0397-497E-87EF-B4C8263F741E
Data:“我要获取数据”
Sign: 8dfa959cd5db1ead40a29c56cfe176ec
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
五、接口限流(Throttling)
限流:Throttling, 针对用户访问接口的频率进行控制,如限制同一个IP每秒种对XX接口访问3次。
结合路由器的ddos+WebApi的限流,确保服务器及应用程序安全。
Throttling是三方插件(dll)。
参考文章:
WebApi接口安全机制:API接口限流防止恶意访问 ThrottlingHandler消息处理机制
六、黑、白名单用户
黑名单:sys_IP_Blacklist
客户端请求(Request)会带有终端信息,比如:IP,操作系统,时间。
WebApi后台判断当前IP是否在黑名单存在,黑名单用户拒绝访问接口。
判断黑名单的优先级最高!!!
白名单:sys_IP_Whitelist
优先通道用户,享有特权用户。如:后台系统有5级安全检查,若是白名单用户只需3级检查即可。
扫一扫加微信
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网