2012-06-04 35 views
1

这里的场景: 我有一个客户端服务器应用程序,客户端将加密数据发送到服务器,服务器根据客户端数据执行例程。 我该如何防止有人嗅探发送的数据并将其重新发送到服务器,以便服务器执行命令并可能会让非授权人员访问敏感数据,甚至授予登录权限?如何防止客户端重新发送嗅探命令?

+0

加密如何? SSL和TLS证明了不会发生重播攻击。 – EJP

+0

基本上它是AES,我无法对所有服务器实施SSL。 (不要问为什么,这是事实。) – Husky110

+0

感谢您的答案! – Husky110

回答

2

要求客户端在发送任何命令之前从服务器获取nonce - 一个只能使用一次的号码。在一个nonce被发送给客户端之后,来自该客户端的任何命令都不包含你猥亵的随机数,这显然是伪造的。即使有人嗅探了现时,他们也无法使用它,因为他们不知道创建自己的消息所需的加密密钥,同一个人将无法再使用旧请求,因为他们不会匹配任何当前活动的随机数。

编辑:显然,你可以使用各种聪明的方式在客户端生成一个随机数,以避免额外的往返,但这将是棘手的。

0

您可以在请求中包含nonce,并拒绝任何重复使用已存在的现时值的请求。