保护 API 免受重放攻击

问题描述 投票:0回答:3

我正在开发一个 API。该 API 将由 iPhone 应用程序使用。

API需要登录。我们使用 asp.net 表单身份验证来保护它。客户端获取一个 cookie 以在即将到来的请求时重新发送。

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

我正在考虑在每个请求时更新 cookie,但应用程序有时会异步发送多个请求。所以这行不通。

ios security api-design
3个回答
1
投票

您可能不关心任何动作是否可以重播,例如可能会获取一些非重要信息的异步请求。

您仍然可以要求应用程序在执行每个具有财务或安全后果的重要操作之前重新登录。

我希望您永远不要通过网络交换身份验证秘密(密码)。相反,您向应用程序发送一个质询字符串,应用程序使用密码对其进行编码并发回。服务器也执行相同的操作并比较结果。此操作很容易在任何重要操作之前重复,甚至可以作为重要操作的一部分:回复是通过秘密编码发送的。除非窃听者知道这个秘密,否则他就无法重播某个动作,因为服务器发送的挑战会有所不同。

不,我不知道这个方案是否适合 asp.net 身份验证机制。


0
投票

您可以尝试让客户端在每笔交易中发送加密或哈希保护的序列号和时间戳,并检查服务器端是否有重复项。


0
投票

除了为您的应用程序使用 SSL 连接以确保没有人窃取 cookie 之外,没有万无一失的方法来防止利用被盗身份验证 cookie 的重放攻击。

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

© www.soinside.com 2019 - 2024. All rights reserved.