如何保护HTTP REST API免受恶意使用?

时间:2012-11-30 09:33:58

标签: jquery api security asp.net-web-api

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

它将允许您确保请求已从连接到您的应用的设备发送,并将帮助您记录请求并知道哪个用户称为哪个端点。

当然,如果用户在wifi网络上,如果你没有使用https,他可能会成为中间人的受害者并且他的api密钥可能会受到损害。

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

答案 1 :(得分:0)

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