前端请求后端API 会带cookie ,
我目前的做法是前端传cookie 里面有一堆参数,然后一个hash值,
一堆参数和服务器的一个key加密MessageDigest,最后得出值与hash是否相同,就代表成功和失败。
现在关键就是这个key,这个key 感觉就是关键呀,我是写在app.xml里面的,感觉好不保险哦,好担心被人偷了哈哈。请问大神们咋办?你们都咋做的呀?
前端请求后端API 会带cookie ,
我目前的做法是前端传cookie 里面有一堆参数,然后一个hash值,
一堆参数和服务器的一个key加密MessageDigest,最后得出值与hash是否相同,就代表成功和失败。
现在关键就是这个key,这个key 感觉就是关键呀,我是写在app.xml里面的,感觉好不保险哦,好担心被人偷了哈哈。请问大神们咋办?你们都咋做的呀?
如果会被偷,放哪都是会被偷。
如果是全局的key:可以定时生成一个随机的,比如1小时生成一个新的key,验证时用前一小时和当前这个小时的key对数据进行验证,只要有一个合法就是有效的请求。
或者:人工定时改代码,一礼拜换一个key,自己安慰自己吧
你这个应该来说叫「签名」。
在将 cookie 发送到浏览器之前,获取所有 cookie 信息并签名,然后将签名加入 cookie 中, 客户端请求时验证签名。
整个签名过程是在服务器完成的,也就是说,这个是相对安全的,可以防止客户端篡改 cookie 。
至于上面说的 自动更改,这个你要考虑一个情况就是 cookie 在大多数情况下使用,我们就是为了让他保持登录,而自动变更 key 之后,就会导致之前的 cookie 验证失败,这个就要参考 JWT 的设计。
在理想情况下,防止攻击都是防止第三者,如果是用户自主发起的,不太容易分辨,反之还容易误伤。
15 回答8.2k 阅读
8 回答6k 阅读
3 回答3.6k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.2k 阅读
key你要动态生成呀,一个用户一个key。
另外你这个hash值只是为了防止数据在传输过程中被篡改,另外MD5是哈希不是加密。
你要先搞清楚你设置这个hash的目的,然后才能说下一步。