【发布时间】:2012-02-21 18:01:45
【问题描述】:
我正在使用 Node.js 和 Mysql,我想加密我数据库中的数据。
我想知道如何避免将普通密钥存储在一个容易找到的文件中,AES_ENCRYPT(text, key) 对我来说没有意义,因为我传递了一个普通密钥,有人可以在服务器上毫无问题地读取。
有什么建议吗? 非对称密码学?
谢谢
【问题讨论】:
标签: javascript mysql node.js
我正在使用 Node.js 和 Mysql,我想加密我数据库中的数据。
我想知道如何避免将普通密钥存储在一个容易找到的文件中,AES_ENCRYPT(text, key) 对我来说没有意义,因为我传递了一个普通密钥,有人可以在服务器上毫无问题地读取。
有什么建议吗? 非对称密码学?
谢谢
【问题讨论】:
标签: javascript mysql node.js
您可以让用户在启动时提供密钥,使用 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();
});
【讨论】:
我会在将任何数据发送到 MySQL 服务器之前对其进行加密,以防止任何未加密的数据出现在日志中。以下信息详细介绍了应该根据需要执行的 Node.js 加密模块。这样一来,离开您的服务器的所有内容都是加密字符串,如果没有密钥,这些字符串的用处要少得多。
Node.js 加密模块文档:http://nodejs.org/docs/latest/api/crypto.html
【讨论】: