1

我们正在与第 3 方一起开发 iPhone 应用程序。该应用程序将通过 HTTP 从 ASP.NET WebAPI 请求数据。大多数情况下,这些请求是只读的,没有副作用,但其中一些允许用户更改数据或发送电子邮件。如何保护 API 不被未使用我们应用的用户调用?包含一个简单的密码似乎无效,因为任何有权访问该应用程序的人都可以轻松嗅探它。

是否有标准机制或技术来防止此类问题?

编辑:添加一个简单的密码来请求但随后对 API 使用强制 HTTPS 是否足够?如果使用 HTTPS,也许添加密码并不能提高安全性?

4

2 回答 2

1

一个简单的解决方案是在创建帐户时为每个用户生成一个随机 api 密钥,然后将其存储在应用程序的连接数据中。

然后,每个请求都必须使用 api 密钥进行签名。

它将允许您确保请求是从连接到您的应用程序的设备发送的,并将帮助您记录请求并了解哪个用户调用了哪个端点。

当然,如果用户在 wifi 网络上,如果您不使用 https,他可能会成为中间人的受害者,并且他的 api 密钥可能会被泄露。

如果您不希望 api 密钥在每个传出请求中“可见”,您可以传输用户 ID 和签名,该签名将是请求参数和 api 密钥的串联,散列到 md5 中。REST API 必须做同样的事情并在允许请求之前检查签名是否存在差异。

于 2012-11-30T09:40:04.997 回答
0

如果您寻找重量级的 xml 解决方案,您可以使用自己的 CA 设置一些内部 PKI。并为每个用户颁发一个证书(存储在他们的手机上),然后您可以查看XAdES。并为展开或封装类型签名创建验证逻辑。在过滤器中,在解析之前剥离签名,或者在给定的方法中手动执行此操作。当然还有用于传输保护的 SSL/TLS。

于 2012-12-03T13:23:31.820 回答