这是场景:我有一个客户端-服务器-应用程序,其中客户端将加密数据发送到服务器,服务器根据客户端数据执行例程。如何防止有人嗅探发送的数据并将其重新发送到服务器,以便服务器执行命令并可能让未经授权的人访问敏感数据甚至授予登录权限?
问问题
101 次
2 回答
2
要求客户端在发送任何命令之前从服务器获取一个随机数- 一个只使用一次的数字。在将 nonce 发送给客户端后,来自该客户端的任何命令如果不包括您最后提供的 nonce,显然是伪造的。即使有人嗅到了 nonce,他们也无法使用它,因为他们不知道创建自己的消息所需的加密密钥,同样的人将无法重用旧请求,因为它们不会匹配任何当前活跃的随机数。
编辑:显然,您可以使用各种智能方法在客户端上生成随机数以避免额外的往返,但这会比较棘手。
于 2012-06-04T08:23:51.970 回答
0
您可以在您的请求中包含一个nonce,并拒绝任何重用已经看到的 nonce 的请求。
于 2012-06-04T08:22:58.990 回答