2012-11-30 82 views
1

我们正在开发iPhone应用程序以及第三方。该应用程序将通过HTTP从ASP.NET WebAPI请求数据。大多数时候这些请求是只读的,没有副作用,但其中的一些允许用户更改数据或发送电子邮件。如何保护API不被使用我们的应用程序的用户调用?包括一个简单的密码似乎是无效的,因为它可以很容易地被任何有权访问应用程序的人嗅探。如何保护HTTP REST API免遭恶意使用?

有没有一个标准的机制或技术来防止这样的问题呢?

编辑:它可能是足够的,可以添加一个简单的密码来请求,但然后使用API​​的强制HTTPS?如果使用HTTPS,可能添加密码不会提高安全性吗?

+0

您需要在REST服务的身份验证/授权中执行此操作。您可以在其中获得测试,无论用户是否已通过身份验证。 –

回答

1

一个平凡的解决方法是为每一个用户提供随机的API密钥创建他的账户时,然后在应用程序的数据库存上的连接。

然后,每个请求具有与API密钥签署。

它可以让你以确保请求已经从与你的应用设备发送,并会帮助您的请求,并知道哪些用户调用哪个端点。

当然,如果用户是WiFi网络,他可以中间人和他的API密钥的受害者会受到影响,如果你不使用HTTPS。

如果您不希望api密钥在每个传出请求中“可见”,则可以传输用户标识和一个将请求参数和API密钥串联的签名,并将其散列为md5。 REST API必须执行相同的操作,并在允许请求之前检查签名的差异。

0

如果你寻找一个重量级的XML解决方案,你可以设置一个小的内部PKI用自己的CA.并为每个用户颁发证书(存储在他们的电话上),然后您可以查看XAdES。并为eveloped或包络类型签名创建验证逻辑。在解析之前剥离签名时在Filter中,或者在给定方法中手动执行此操作。另外还有用于运输保护的SSL/TLS。