【问题标题】:How to avoid keys in a plain file?如何避免普通文件中的密钥?
【发布时间】:2012-02-21 18:01:45
【问题描述】:

我正在使用 Node.js 和 Mysql,我想加密我数据库中的数据。 我想知道如何避免将普通密钥存储在一个容易找到的文件中,AES_ENCRYPT(text, key) 对我来说没有意义,因为我传递了一个普通密钥,有人可以在服务器上毫无问题地读取。

有什么建议吗? 非对称密码学?

谢谢

【问题讨论】:

    标签: javascript mysql node.js


    【解决方案1】:

    您可以让用户在启动时提供密钥,使用 readline 模块:

    您的应用:

    module.exports = function(key) {
        var app = // ...
    }
    

    你的启动脚本:

    var readline = require('readline')
      , interface = readline.createInterface(process.stdin, process.stdout, null);
    
    interface.question("Please supply a key", function(key) {
        // load your app, supplying the key
        require("./app")(key);
        interface.close();
        process.stdin.destroy();
    });
    

    【讨论】:

      【解决方案2】:

      我会在将任何数据发送到 MySQL 服务器之前对其进行加密,以防止任何未加密的数据出现在日志中。以下信息详细介绍了应该根据需要执行的 Node.js 加密模块。这样一来,离开您的服务器的所有内容都是加密字符串,如果没有密钥,这些字符串的用处要少得多。

      Node.js 加密模块文档:http://nodejs.org/docs/latest/api/crypto.html

      【讨论】:

      • 该链接导致文档严重过时。这个更好:nodejs.org/docs/latest/api/crypto.html
      • 感谢@LinusGThiel - 我更熟悉 Coldfusion,但同样的原则也适用 :)
      • @Simonatmso.net node.js 在服务器上运行,我如何在客户端使用“crypto”模块??
      • 恐怕我对此一无所知,但如果您这样做,它会暴露您的密钥。我建议建立从客户端到服务器的 HTTPS 连接,并在服务器上执行加密,从而使密钥对服务器保密。对于比上述更具体的任何内容,您需要详细说明您正在尝试做什么/您目前正在尝试如何做的具体问题。
      • @Dail 密码学不适用于客户端,因为它的代码是公开的,推荐使用 https 方式。
      猜你喜欢
      • 2023-03-07
      • 1970-01-01
      • 2018-01-18
      • 2020-04-30
      • 2017-04-21
      • 2017-11-25
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多