我正在构建一个应用程序,我需要为其存储用户的登录凭据以用于 3rd 方服务。与第 3 方服务的通信是通过 https GET 请求完成的。
从我所看到的来看,查看类似这样的帖子,对于执行此操作的最佳实践没有明确的答案,并且该帖子中讨论的具体方法至少都有一些不足之处。
所以我的一个想法是,也许可以通过“预加密”第三方请求的查询字符串并将加密数据存储在我的数据库中来代替直接存储用户的凭据来解决这个问题。这样,我可以以加密形式存储凭据,但不必担心密钥被泄露,因为它由第三方持有,而不是我。如果我的数据库被入侵,入侵者将不会得到比通过数据包嗅探获得的更多的东西。
我似乎找不到任何人这样做的任何例子,所以我想就社区是否认为这是一种合理的方法提供反馈。除此之外,关于如何做到这一点的一点帮助会很棒。我正在 node.js/express 中构建我的应用程序,目前我只是使用 https 模块来处理与第 3 方的通信,但显然我必须在较低级别进行此操作方法。
基本过程是:
- 执行与 https.request 相同的操作,以建立到第 3 方的 ssl/tls 连接并加密包含用户凭据的查询字符串
- 不要将加密数据实际发送给第三方,而是将其存储在我的数据库中
- 稍后,用存储的数据“重构”https连接,发送给3rd,处理response,win