【问题标题】:Storing strings securely in memory from within node.js apps从 node.js 应用程序中将字符串安全地存储在内存中
【发布时间】:2013-06-08 23:51:24
【问题描述】:

In this question,Mubashar 询问有关使用 C# 在内存中安全存储敏感信息的问题,并指向 .NET 中的 SecureString 类。是否有现有的类似工具可以在 node.js 中执行此操作?否则,使用可用节点资源执行此操作的方法是什么?

【问题讨论】:

    标签: node.js security memory


    【解决方案1】:

    这些不是您要寻找的机器人。

    (因为无法删除已接受的答案)

    【讨论】:

    • 此时,密码已存储在password 变量中,因此在内存中,不安全。
    • password = undefined 不会擦除用于存储密码的内存。
    • 这是一种非常危险的安全错觉。字符串是不可变的,因此无需更改或释放它们。任何时候创建一个字符串,即使它是一个“临时”字符串,比如在调用console.log 时,它都会出现在堆转储中。闭包或任何形式的混淆都不会改变任何事情
    【解决方案2】:

    唯一的方法是使用像Uint8Array 这样的类型化数组(Buffer 类只是一个薄包装器)并在使用后用null 或任何其他值填充它。

    但有一些事情需要考虑:

    例如,当您获得凭据时,您很可能会以 JSON 格式获得它们。在这种情况下,当您不拦截时,任何努力都是徒劳的,因此请求正文不会像任何网络框架那样存储在字符串中。

    当您从文本文件中读取 API 密钥时,应该很明显为什么内存安全可能不是最大的问题。为此,应该考虑使用密钥库。

    但即便如此,您也不能真正确定没有泄漏。例如,我怀疑node.js streams 自己清理后。即使您手动覆盖它们,复制或系统 API 也可能存在泄漏。即使是密码管理员也有泄露密码的问题。

    总结一下:即使您考虑了所有问题,也很可能会出现您无法防止的泄漏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 2021-09-02
      • 2016-05-18
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多