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

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

牧羊人nacy

首先要确定sign是干什么的。sign的主要目的是保证数据的完整性,防止在网络传输的过程中篡改数据。name=kevinheight=170key=$$key$$假如上面的数据签名字符串是name=kevin&height=170$$key$$签名结果是c5c05d54d25791b0551b25a482d8c2e2。这个key在客户端是可见,别人也可以轻易拿到这个参数。但是拿到这个key又有什么意义呢?因为key是不会在网络中进行传输的,所以服务器最终生成签名的key还会是使用$$key$$,即使你修改了数据,也修改了客户端的key但是你没有修改掉服务器的key,最后服务器还会按照自己的方式生成sign。如果你修改了数据,最终也只是签名结果不一致而已。

暮色呼如

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

相关分类

JavaScript