COP云开放平台接口签名
2022-03-31 15:18:55 0 举报
云开放平台接口签名、接口安全、接口验签
作者其他创作
大纲/内容
sign=token
在APP开放API接口的设计中,由于大多数接口涉及到用户的个人信息以及产品的敏感数据,所以要对这些接口进行身份验证,为了安全起见让用户暴露的明文密码次数越少越好,然而客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息。Token身份验证1.用户登录向服务器提供认证信息(如账号和密码),服务器验证成功后返回Token给客户端;2.客户端将Token保存在本地,后续发起请求时,携带此Token;3.服务器检查Token的有效性,有效则放行,无效(Token错误或过期)则拒绝。安全隐患:Token被劫持,伪造请求和篡改参数。
服务端
密码一致
请求
timestampsecret拼接
算法加密
客服端
验证
根据appId查询secret
sign=sign
拦截所有请求参数
N
开始
密码模式
sign=sign时间戳有效
验证签名
主动更新token
服务端生成token
包含timestamp、nonce、secret、sign
Y
生成token
与token的验证方式类似,为客户端分配appId(密钥,用于接口加密,不参与传输),将appId和所有请求参数组合成源串,根据签名算法生成签名值,发送请求时将签名值一起发送给服务器验证。这样,即使Token被劫持,对方不知道appId和签名算法,就无法伪造请求和篡改参数。再结合上述的重发攻击解决方案,即使请求参数被劫持也无法伪造二次重复请求。
记录nonce设置超时timeout
timestamp-now<timeout
通过
服务端提供secret
云开放平台API接口签名验证(云开放平台合作电话:15801818092,共创、共担、共享、共赢,实现API经济)接口安全问题(请求身份是否合法?请求参数是否被篡改?请求是否唯一?)AppId&AccessKey&SecretKey请求身份为开发者分配AccessKey(开发者标识,确保唯一)和SecretKey(用于接口加密,确保不易被穷举,生成算法不易被猜测)防止篡改参数签名1.按照请求参数名的字母升序排列非空请求参数(包含AccessKey),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA2.在stringA最后拼接上Secretkey得到字符串stringSignTemp3.对stringSignTemp进行MD5运算,并将得到的字符串所有字符转换为大写,得到sign值请求携带参数AccessKey和Sign,只有拥有合法的身份AccessKey和正确的签名Sign才能放行。这样就解决了身份验证和参数篡改问题,即使请求参数被劫持,由于获取不到SecretKey(仅作本地加密使用,不参与网络传输),无法伪造合法的请求重放攻击timestamp+noncenonce指唯一的随机字符串,用来标识每个被签名的请求。通过为每个请求提供一个唯一的标识符,服务器能够防止请求被多次使用(记录所有用过的nonce以阻止它们被二次使用)。然而,对服务器来说永久存储所有接收到的nonce的代价是非常大的。可以使用timestamp来优化nonce的存储。假设允许客户端和服务端最多能存在15分钟的时间差,同时追踪记录在服务端的nonce集合。当有新的请求进入时,首先检查携带的timestamp是否在15分钟内,如超出时间范围,则拒绝,然后查询携带的nonce,如存在已有集合,则拒绝。否则,记录该nonce,并删除集合内时间戳大于15分钟的nonce(可以使用redis的expire,新增nonce的同时设置它的超时失效时间为15分钟)。
普通加参sign=token
token是否有效
返回错误码
签名算法:开放平台api接口的所有的post请求并且请求头为json的接口添加了签名值的校验,签名算法的机制如下: 比如你的请求json为:{\"app_id\": \"710510245885661184\
普通加参sign=密码
1.您需要去COP云开放平台注册一个账号,然后申请成为开发者,并且申请一个应用,当您的应用经过审核之后,您将获得一个appId和accessKey,这两个参数决定了您在COP云开放平台的身份标识,只有获得了这两个参数,您才有资格调用开放平台的api接口2.您需要凭借appId和accessKey先获取token,有些接口还需要传递签名值(双层安全保障),才可调用开放平台的api接口
token一致
0 条评论
下一页