如何为API提供安全保障

时间:2011-11-29 10:49:19

标签: php android session

我使用SLIM框架在php中设计了API。我可以像这样访问这些API:

http://192.168.1.210/getSchool  

此API用于获取有关学校的信息。我在我的Android应用程序中使用这些API。现在我想为我的这些API提供安全保障。所以没有人可以通过身份验证访问这些API意味着只需在地址栏中输入上述URL就无法获得学校列表。

我希望该用户首先使用我的Android应用程序登录,然后他或她可以使用我的api,没有人可以直接访问我的api。

请给我你宝贵的建议。

提前谢谢。

2 个答案:

答案 0 :(得分:1)

用户在您的应用程序中注册后,您就可以生成&在数据库中为它们分配一个API密钥(可能是哈希),您可以将其返回到手机中。每当手机向API发送请求时,它也会通过其API密钥发送,您可以根据其数据库条目进行验证。

这也应该通过SSL完成,以避免MITM攻击/查看API密钥。

还有其他可用的方法:Looking for suggestions for building a secure REST API within Ruby on Rails(语言不可知)。

答案 1 :(得分:0)

您应该在每个用户注册并存储在服务器上时为每个用户创建UID和密钥。最初使用https将这些传递给用户。用户将存储这两个值(确保安全地保存密钥)。

当用户想要发送api请求时,他将创建请求URL然后使用密钥+时间戳对其进行哈希处理,并将UID,哈希和时间戳添加到请求并发送到服务器。

服务器提取UID然后从db获取秘密,然后使用密钥+时间戳参数生成请求的散列(没有UID,散列和时间戳)。

如果生成的哈希和来自url匹配的哈希参数继续请求或忽略它。

或者

实施OAuth