内部 REST API 安全
Internal REST API security
我已经研究了几天了,遇到了很多问题,但我仍然不太确定。
我正在使用 Node.js 创建一个 REST API,它将用于 Web 应用程序和仅供应用程序后端使用而不供其他开发人员使用的移动应用程序.
我目前担心的是安全性我知道还有其他方法,例如 OAuth 等,但我想知道我当前的方法是否足够安全。
"client" 使用 Node 中的 crypto.createHmac('text', 'secret');
方法创建一个 HMAC-SHA1 令牌,其中包含一个 API 密钥和一个秘密。秘密内置于代码中,而 API 密钥先前已在用户登录应用程序时从数据库中检索到。客户端然后发送此令牌以及用户 ID。
REST 服务器然后检索已发送的用户 ID 的 API 密钥,然后创建一个 HMAC-SHA1 令牌,同样使用刚刚检索到的 API 密钥和一个秘密。然后它检查它们是否相等并继续请求。
我不介意是"reinventing the wheel"什么的,更多的是经验。如果这种方法不安全,我想知道为什么。
没有客户端设备的物理安全性(即:您拥有硬件),就没有完美的安全性。拥有客户端设备的人将始终能够找到您的秘密,因此不必太担心。使用您的 HMAC 来隐藏来自网络代理的秘密。
即使使用 OAUTH,客户端密钥也可能被盗。
您可以通过要求身份验证来为用户提供安全保障。听起来您已经在这样做了。所以我觉得你很好
也就是说,作为一般规则,我更喜欢使用现有的协议和库,而不是实现自己的协议和库。他们往往有更安全的实施。
我已经研究了几天了,遇到了很多问题,但我仍然不太确定。
我正在使用 Node.js 创建一个 REST API,它将用于 Web 应用程序和仅供应用程序后端使用而不供其他开发人员使用的移动应用程序.
我目前担心的是安全性我知道还有其他方法,例如 OAuth 等,但我想知道我当前的方法是否足够安全。
"client" 使用 Node 中的 crypto.createHmac('text', 'secret');
方法创建一个 HMAC-SHA1 令牌,其中包含一个 API 密钥和一个秘密。秘密内置于代码中,而 API 密钥先前已在用户登录应用程序时从数据库中检索到。客户端然后发送此令牌以及用户 ID。
REST 服务器然后检索已发送的用户 ID 的 API 密钥,然后创建一个 HMAC-SHA1 令牌,同样使用刚刚检索到的 API 密钥和一个秘密。然后它检查它们是否相等并继续请求。
我不介意是"reinventing the wheel"什么的,更多的是经验。如果这种方法不安全,我想知道为什么。
没有客户端设备的物理安全性(即:您拥有硬件),就没有完美的安全性。拥有客户端设备的人将始终能够找到您的秘密,因此不必太担心。使用您的 HMAC 来隐藏来自网络代理的秘密。
即使使用 OAUTH,客户端密钥也可能被盗。
您可以通过要求身份验证来为用户提供安全保障。听起来您已经在这样做了。所以我觉得你很好
也就是说,作为一般规则,我更喜欢使用现有的协议和库,而不是实现自己的协议和库。他们往往有更安全的实施。