reactjs 在UI中存储私钥的最佳方法

zwghvu4y  于 2023-03-29  发布在  React
关注(0)|答案(2)|浏览(262)

我正在使用的后端服务要求我在API头中传递安全令牌。因此,我正在寻找一种安全的方式来使用React.js在前端存储私钥和其他API令牌。
我已经探索了几个选择,

  • 将私钥存储在配置文件中并将其包含在捆绑包中。最简单的选择,但非常糟糕,因为它很容易暴露,原因显而易见。
  • 拥有一个单独的后端服务,添加所需的头并将请求转发到实际的后端服务。这可能会起作用,但它会增加其他问题,如额外的网络延迟,新服务的安全性
  • 有一个代理服务(后端为前端模式)。同样,额外的网络延迟和安全性可能是一个问题。
  • 将密钥存储在会话或本地存储中-当用户登录时,在成功认证后从登录API获取私钥,并将其存储在浏览器的会话存储中,并在注销时清除。

我喜欢从安全的后端API获取密钥的选项。这是一个安全的选项吗?有任何风险吗?这里对我来说最好的方法是什么?还有我缺少的其他选项吗?
先谢了。

umuewwlo

umuewwlo1#

  • 您不能将密钥存储在配置文件或本地存储中,因为任何人都可以访问该文件并使用该密钥来尝试破解您的应用程序。
  • 正如你提到的,创建一个单独的后端服务只是为了传递密钥不是一个好主意,因为它会为你的请求到达后端增加更多的时间。

溶液

  • 我建议在后端创建一个函数,生成两个密钥,一个将发送给用户,第二个将存储在数据库中,并引用该用户。
  • 然后,您可以使用该公钥从前端发送请求,并在后端使用为该用户存储的私钥验证该公钥。
  • 有一些加密算法可用于此目的。例如:-高级加密标准(AES)、三重DES、RSA安全性。
n3ipq98p

n3ipq98p2#

我有一个建议。与其将私钥存储为纯文本,不如用密码加密私钥(此密码不存储在任何地方),每当需要检索私钥时,请用户首先输入密码,然后用密码解密私钥,然后用于签署交易或使用它做任何你想做的事情。
此外,我认为使用AWS Secrets Manager(Check here)来存储私钥将是一个强大的选择。使用这种服务将使您从通过网络保护敏感数据的头痛中解脱出来,并且它也没有那么多的网络延迟。
它并不是真的在UI中存储密钥,但我认为它可以很好地与您的用例一起工作。告诉我您对此的见解,我对这个主题也很感兴趣。

相关问题