- 使用环境变量
在OSX和Linux中,您可以使用export命令设置环境变量。以下是设置SESSION_SECRET键值的示例:
export SESSION_SECRET="keyboard cat"
在Windows中,你可以使用set命令。
set SESSION_SECRET="keyboard cat"
每次运行时,您也可以设置环境变量。
SESSION_SECRET="keyboard cat" node secret-env.js
使用node.js的process.env来在代码中访问环境变量。
var express = require('express')
var session = require('express-session')
var app = express()
app.use(session({secret: process.env.SESSION_SECRET}))
- 从命令行请求参数
保护机密信息的最佳方式是不将其存储在设置文件中。
如果使用noopt软件包作为参数从命令行请求配置信息,则无需将秘密信息存在文件中。
以下是使用noopt软件包作为参数请求会话密钥的示例。
var nopt = require("nopt")
var longOpts = {
"sessionSecret": String,
}
var shortOpts = {
"s": ["--sessionSecret"],
}
var parsed = nopt(longOpts, shortOpts, process.argv, 2)
console.log("session secret is:", parsed.sessionSecret)
node secret-arg.js --sessionSecret "keyboard cat"
node secret-arg.js -s "keyboard cat"
优点:相比于硬编码或将机密信息作为配置文件,公开机密信息更加安全。
缺点:每次启动应用程序时需要输入的信息量增加,有些麻烦。如果尝试创建和解决脚本,则密码仍然存在于脚本中的问题仍然存在。