这个问题可以进一步升级为: http的请求,如何不被拦截并伪造.
因为 web 是不安全的, 所以很难做到请求会被拦截. 因此, 我们假设请求一定会被拦截.
所以也带来一个问题: 如果请求所携带的參数一直不变, 那么肯定请求就很容易被伪造了.
因此, 把思路转向: 每次请求所携带的参数都不一样.
很容易就能想到公钥私钥的解决方案. 使用公鑰对某一参数进行加密, 然后到服务端进行解密.
同时, 为了让这一参数随时变化, 很明显一个比较简单的参数就是时间了.
在对时间进行加密后, 服務端就可以解密出来, 得到时间. 然后时间进行验证.
考虑到时间会有误差, 所以服务端可以加一个误差值.
这个方案的漏洞是: 如果 app 被破解了, 公钥和參数可以获取了之后, 就可以认为伪造加密后的数据, 进行请求.
没有绝对的安全, 只是把破解的难度加大而已.