【发布时间】:2015-07-28 10:54:43
【问题描述】:
我的要求
我正在制作一个也有移动版本的网站。所以,我让它以 API 为中心。现在我想让我的 API 安全,而不需要 OAuth 的复杂性,因为我需要的安全性非常简单。我不希望任何有权访问 api 链接的人能够访问我的数据。
所以,我偶然发现了这篇文章http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/,这篇文章非常棒,并且消除了我的大部分疑虑。
现在,我正在尝试重新创建文章中的任何内容。我正在使用 Laravel 5 框架进行 PHP 开发。
我想确保该 API 仅被移动应用和网络版本使用,其他人没有。 我看过类似的api链接
example.com/fetchallinformation&publicKey=<something>&Hashkey?<some_hash_key>
现在,我了解到这个密钥是使用 php 中的hash_hmac() 函数生成的。
我的方法
- 我有一张表,用于存储我的 api 用户的 publicKey 和 privateKey
- URL 中的 HashKey 是在客户端对 privateKey 和 publicKey 进行散列生成,然后发送到服务器。因此,我将生成的 Hash 与 publicKey 一起发送到服务器。
- 在服务器端,我使用 publicKey 和 Hash。我从对应于 publicKey 的表中检索私钥并拥有它们并检查生成的哈希是否与客户端发送的哈希相同
- 如果相同,那么我允许他们,否则,我不。
我的困惑
我不确定这是否是正确的做法。
我们能否通过解密哈希得到已用于使用
hash_hmac()生成哈希的数据?
【问题讨论】:
标签: php api security amazon-web-services hash