如何在不使用OAuth的情况下制作安全API?

Par*_*eog 5 php security api hash amazon-web-services

我的要求

我正在制作一个也有移动版的网站.所以,我正在以API为中心.现在我想在没有OAuth复杂性的情况下使我的API安全,因为我需要的安全性非常简单.我不希望有权访问api链接的任何人能够访问我的数据.

所以,我遇到了这篇文章http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/这是非常惊人的,并且清除了我的大部分疑虑.

现在,我正在尝试重新创建文章中的任何内容.我正在使用Laravel 5框架进行PHP开发.

我想确保移动应用程序和Web版本仅使用API​​,而不是其他任何人.我见过像api这样的链接

example.com/fetchallinformation&publicKey=<something>&Hashkey?<some_hash_key>
Run Code Online (Sandbox Code Playgroud)

现在,我明白这个键是通过hash_hmac()在php中使用函数生成的.

我的方法

  • 我有一个表,我为我的api用户存储publicKey和privateKey
  • URL中的HashKey是通过在客户端散列privateKey和publicKey生成的,然后发送到服务器.因此,我将生成的Hash与publicKey一起发送到服务器.
  • 在服务器端,我使用publicKey和Hash.我从与publicKey对应的表中检索私钥并拥有它们并检查结果散列是否与客户端发送的散列相同
  • 如果它是相同的,那么我给他们许可,否则,我没有.

我的困惑

  • 我不确定这是否是正确的方法.

  • 我们可以hash_hmac()通过解密哈希来获取用于生成哈希的数据吗?

Nad*_* S. 0

如果这个方法对你有用,那肯定没问题,而且毫无疑问它是安全的。

关于解密 - HMAC 由于其性质(哈希)而不应被解密。HMAC 被认为是非常安全的,您应该不会有任何问题。您可以阅读更多关于如何以及何时使用 HMAC?[SE安全]