44

首先,生成密钥的好方法是什么?我应该在我的键盘上输入很多随机键来生成一个,但是必须有更好的解决方案。解释生成非常好的密钥的方法。

其次,存储密钥的好方法是什么?我可以在我的应用程序配置中编写密钥,但这意味着对源代码的妥协将危及整个系统。在 Node.js Express 应用程序中存储密钥的好方法是什么?

4

1 回答 1

38

要以编程方式生成秘密,您可以使用节点的crypto.randomBytes()

var crypto = require('crypto');
var jwt = require('jsonwebtoken');

crypto.randomBytes(256, function(ex, buf) {
  if (ex) throw ex;
  var token = jwt.sign({foo: 'bar'}, buf);
  var decoded = jwt.verify(token, buf);
});

至于存储这个,你是绝对正确的,你绝对不应该在你的源代码管理中存储秘密。更好的方法是从环境变量中加载此类敏感信息,例如process.env.MY_SECRET.

我见过的另一种不太常见的模式是从与您的代码分开存储的文件中加载机密。例如,您可以让您的节点应用程序在其中查找 JSON 文件~/.myapp/secrets.json

于 2015-05-07T00:54:02.850 回答