基于timestamp+nonce的会话解决方案
timestamp解决黑客抓包重放请求超过60s的情况,超过60s的请求为非法请求。
nonce(Number used once)仅一次有效的随机字符串,要求每次请求时,该参数要保证不同,所以该参数与时间戳有关。我们把每次请求的nonce参数保存在一个集合中,可以json格式存储在数据库中或缓存中,我们每次处理http请求时,首先判断该请求的nonce参数是否在该集合中,如果存在则认为是非法请求。nonce可以是时间戳的16进制,也可以是客户端的ip地址,mac地址等信息hash之后的参数。
1、客户端首先向服务器发送gettime请求,从服务器获取timestamp参数。
2、客户端生成的sign值(timestamp+token+nonce)与客户端生成的sign值(timestamp+token+nonce)比较,如果不相等说明数据被篡改。token通过uid从数据库中获取
3、相等继续判断时间误差是否在60s内,如果超过60s说明非法请求。
4、若时间误差<60s判断nonce是否在集合内,若在集合内说明非法请求。
5、若不在集合内写入集合内。
基于timestamp+nonce的会话重放解决方案
最新推荐文章于 2023-06-27 18:10:52 发布