2011-01-20 137 views
1

我正在api上工作。 api将被iphone应用程序使用。保护api免受重播攻击

该api需要登录。我们用asp.net表单认证来保护它。客户获得一个cookie以重新发送即将到来的请求。

我们使用的是https,但我想仍然可以重播请求。我该如何保护,以便cookie只能由首次登录的客户端使用?

我在考虑在每次请求时更新cookie。但该应用有时会发送几个异步请求。所以这不会工作。

/帕特里克

回答

1

也许你不关心,如果任何动作可以重播,例如异步请求可能会得到一些非重要信息。

仍然可以要求应用程序在每次执行操作之前都要重新登录,这会导致财务或安全后果。

我希望你永远不要通过网络交换认证机密(密码)。相反,您向应用发送挑战字符串,应用会使用密码对其进行编码并发回。服务器执行相同的操作并比较结果。在任何重要行动之前,这一操作都很容易重复,甚至作为重要行动的一部分:答复由秘密编码发送。除非窃听者知道这个秘密,否则他不会重播一个动作,因为服务器发送的挑战将会不同。

不,我不知道这个方案是否符合asp.net认证机制。

0

您可能会尝试让客户端发送加密或散列保护的序列号和每个事务的时间戳,并检查服务器端的重复项。

+1

时间戳只有在两端都具有同步时钟时才起作用,即使如此,您仍然必须留下一个“松弛窗口”来解决差异。 – Marcin 2011-01-20 22:04:17

0

除了为您的应用程序使用SSL连接以确保没有人盗取cookie之前,没有防止利用被盗认证cookie的重放攻击的傻瓜式方法。

最好的办法是将cookie过期设置为非常低的值,并要求用户在超时后重新输入凭据。理想情况下,这将是一个滑动窗口,但如果您不介意真正打勾用户,则可以使其成为绝对的窗口。

相关问题