商城网站建设计划书,网站优化要怎么做,南京 百度 网站建设,h5网站开发软件渗透测试 一、Token与签名
一般客户端和服务端的设计过程中#xff0c;大部分分为有状态和无状态接口。 一般用户登录状态下#xff0c;判断用户是否有权限或者能否请求接口#xff0c;都是根据用户登录成功后#xff0c;服务端授予的token进行控制的。 但并不是说有了tok…渗透测试 一、Token与签名
一般客户端和服务端的设计过程中大部分分为有状态和无状态接口。 一般用户登录状态下判断用户是否有权限或者能否请求接口都是根据用户登录成功后服务端授予的token进行控制的。 但并不是说有了token请求就是安全的那么万一token泄露了怎么办呢谁都可以调用我的服务了吗
所以token只是用户权限以及会话的凭证除了会话的凭证我们也要校验请求的合法性以防止token泄露而导致客户的损失。 而签名摘要计算则是用来进行请求合法性校验。经常同学们会把这两种搞混。以为使用token就是安全的。
二、签名计算设计
签名摘要的计算一般分为签名值和签名的keysignature生成方式如下 ①、签名字符串的设计
针对不同的攻击策略设计什么样的请求头部。常用的签名字符串设计如下 CanonicalizedHeaders构建方法如下
Ⅰ、以service为前缀的的Headers但是不包括service-signature如下
service-nonce客户端生成32位随机字符串所有客户端5分钟内不能重复重复时平台回复nonce重复客户端需要重新请求。service-date请求生成的时间与服务器本地时间差超过5分钟认为鉴权失败。service-session-id客户端会话id用于本次登录后的所有请求会话标识。service-client客户端信息包括客户端类型、客户端版本、操作系统等。
Ⅱ、Header名称全部小写值前后应不包含空格
Ⅲ、Header的名称和值之间用“:”相隔组成一个完整的header
Ⅳ、根据header名称的字符顺序将header从小到大进行字典排序每个header之后跟一个“\n”
eB5eJF1ptWaXm4bijSPyxw\n
service-client:ewogICAgImRhdGEiOiB7CiAgICAgICAgImNsaWVudFR5cGUiOiAieHh4IiwKICAgICAgICAiY2xpZW50VmVyc2lvbiI6ICIzLjAiCiAgICB9Cn0\n
service-date:2022-07-22T14:43:07Z\n
service-nonce:d36e316282959a9ed4c89851497a717f\n
service-session-id:0123456\n②、签名key设计
一般客户端请求的接口类型有三种分别是有登录状态和无登录状态以及登录这个特殊接口。无登录状态前的接口都是服务为了提供能力而做的一些接口相比而言都是提供通用能力的。不涉及客户个人信息相关。安全风险较小。
用户登录后的接口一般都是涉及到客户信息的接口隐私泄露风险较大。因此对于每一种状态可采用不同的key值设计。讲风险降到最低。
Ⅰ、用户未登录签名key值
用户未登录时平台提供通用能力调用服务端接口时使用约定好的固定SK进行接口签名鉴权即可。固定SK由后台提供16位的随机字符串。
Ⅱ、用户登录签名key值
我们知道所有在客户端和前端保存的key值永远不是最安全的有可能被拆包而发现对应的加密SK从而被不法分子破解因此用户登录时传输密码时如果使用固定key有可能body体被解开密码被泄露的风险。
登录时用户会输入密码而服务端也知道用户加密后的密码那么使用用户输入的密码当做key则是最安全的方式。并且交互过程中不需要将用户密码放在body体重传到后端进行校验只需校验签名的准确性即可。这样就可以极大的增加用户密码的安全性。
用户登录验证时会输入用户的密码则登录时用户密码作为签名的key进行鉴权校验。加密key为SHA256(LOWER(MD5(passwd)),salt)salt为用户的盐值可以使用用户的手机号。
Ⅲ、用户登录签名key值
用户登录成功之后所有接口都要有鉴权为了每个用户安全起见针对每个用户颁发自己的SK登录成功后获取。这样客户端将sercet保存到内存中可以有效防止SK泄露。
用户注册成功后针对用户账户后台生成16位的sercet用户登录成功后后台返回用户的sercet登录之后的接口鉴权使用sercet进行鉴权。
三、接口合法性校验流程 1、首先对接口的请求头的nonce进行5分钟内是否重复的校验可以有效的防止重放攻击。
2、然后对时间戳进行校验防止客户端时间篡改攻击。
3、之后对请求的MD5进行校验防止对请求体进行篡改。
4、最后将noncedatemd5以及session进行组合签名校验校验签名值是否成功。可以有效防止上面单一修改验证通过但签名值校验不通过的问题。
基于以上的校验基本上可以防止大部分攻击场景。当然为了更加安全你还可以增加黑白名单限制、接口访问限流、用户常用设备绑定、用户异地登录等保护用户财产的安全性设计。