我已经调查了这几天,遇到了很多这样的问题,但我还是不太确定。
我正在用Node.js创建一个REST,它将用于一个web应用程序和一个移动应用程序,它只供应用程序的后端使用,而不是给其他开发人员使用。
我目前关心的是安全性,我知道还有其他方法,如OAuth等,但我想知道我目前的方法是否足够安全。
"client“使用Node中的crypto.createHmac('text', 'secret');方法创建一个HMAC-SHA1 1令牌,该方法包含一个API密钥和一个秘密。这个秘密是内置在代码中的,而API密钥以前在用户登录应用程序时已经从DB中检索过。然后,客户端发送此令牌以及用户ID。
然后,REST服务器检索已经发送的用户ID的API密钥,然后创建一个HMAC-SHA1令牌,再次使用它刚刚检索到的API密钥和一个秘密。然后,它检查它们是否相等,并继续进行请求。
我不介意它是否是“重新发明车轮”或其他什么,它更多的是为了经验。如果这个方法不安全,我想知道原因。
发布于 2015-04-13 02:34:57
没有客户端设备的物理安全性(即:您拥有硬件),就没有完美的安全性。拥有客户端设备的人总是能够找到你的秘密,所以不要太担心它。使用您的HMAC从网络代理中隐藏秘密。
即使有了OAUTH,客户的密钥也可能被偷。
您可以通过要求身份验证为用户提供安全性。听起来你已经这么做了。所以我觉得你很好。
也就是说,作为一般规则,我更喜欢使用现有的协议和库,而不是实现自己的协议和库。它们往往有更安全的实现。
https://stackoverflow.com/questions/29595474
复制相似问题