为了账号安全,请及时绑定邮箱和手机立即绑定

sign 签名在客户端怎么保证安全(ios,android,web)

sign 签名在客户端怎么保证安全(ios,android,web)

PHP
Cats萌萌 2018-08-05 14:09:38
S = key + url_encode(path) + T签名 SIGN = md5(S).to_lower(),to_lower 指将字符串转换为小写; 一般会这样签名API接口开发时,如果考虑到接口的安全和参数不可串改,通常做法一般是吧参数通过 一定的算法签名后把签名的 sign 值一起发给服务端,这样服务端也根据除去 sign 参数,把所有参数也经过签名后,判断客服端传递的 签名是否匹配。这样就解决了,但是有个问题,签名算法基本都一样,能做的就是签名时加上一个 key 值,但是这个key值放在客户端怎么保证安全呢。比如放在 web 端,js 代码是直接可以看得,这样肯定不安全,放在 android 上面貌似也不安全,因为 apk 是可以反编译的。有小伙伴解决过这个问题的么?
查看完整描述

2 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

首先要确定sign是干什么的。

sign的主要目的是保证数据的完整性,防止在网络传输的过程中篡改数据。

name=kevinheight=170key=$$key$$

假如上面的数据签名字符串是 name=kevin&height=170$$key$$ 签名结果是 c5c05d54d25791b0551b25a482d8c2e2。这个 key 在客户端是可见,别人也可以轻易拿到这个参数。
但是拿到这个key又有什么意义呢?

因为key是不会在网络中进行传输的,所以服务器最终生成签名的key还会是使用$$key$$,即使你修改了数据,也修改了客户端的key但是你没有修改掉服务器的key,最后服务器还会按照自己的方式生成sign。如果你修改了数据,最终也只是签名结果不一致而已。


查看完整回答
反对 回复 2018-08-09
?
守着一只汪

TA贡献1872条经验 获得超3个赞

sign里存放的都是保密信息,比如用户的id或者其它用于验证api合法性的参数
接口的请求参数一般是不放在sign里的,直接明文传输用https加密通信过程就可以
sign是服务端加密后传给客户端存放,在请求api时带到服务端验证身份合法性的,里面不会有接口的请求信息,这两个是要分开的

查看完整回答
反对 回复 2018-08-09
  • 2 回答
  • 0 关注
  • 779 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信