在运行时添加用户密码

时间:2017-08-23 19:51:12

标签: javascript node.js security

我有一些节点应用程序应该获取运行的用户密码, 我不想把用户密码硬编码,但我想在部署期间通过某种方式传递它,就像我这样做 npm start使用命令行并添加用户密码 将填写代码,有一些最佳实践如何在节点中做到这一点?

在我搜索之后我发现了这篇文章,但它没有帮助,因为你把代码放在配置文件中对我来说看起来是一样的,用户passowrd提供了我想避免的代码......任何示例将非常有用

Best way to store DB config in Node.Js / Express app

假设文件中的一个需要此运行时用户密码...

e.g。

request({
    uri: API,
    method: 'POST',
    json: true,
    form: {
      'username': 'user123',
      'password': 'password123'
},

我想要的是类似于这种方法,(或者有更好的东西,我想了解如何使用它)

 request({
    uri: API,
    method: 'POST',
    json: true,
    form: {
      'username': ~username,
      'password': ~password
},

在部署期间运行以下命令

npm start username user123 password password123

3 个答案:

答案 0 :(得分:1)

您最好的选择是拥有一个外部配置文件并从中读取用户名和密码配置。 :)您需要确保您的Web应用程序不会向公众提供配置文件。因此,我建议将配置放在比服务器更高级别的目录中,这样您就不会有意外提供配置的机会。

答案 1 :(得分:1)

我不久前建立了一个类似的应用程序。我的文件夹结构如下:

root
|- app               // App logic (Not accessible in front-end)
|- templates         // Template files (Not accessible in front-end)
|- static            // Static files (Accessible in front-end)
|- config            // Config files (Not accessible in front-end)
   |- config.json    // Config file (Not accessible in front-end)
|- index.js          // Example JS file

如果将config/config.json添加到.gitignore文件中,假设您使用git,则在推送到生产时不会传输它。这意味着您必须自己在生产环境中创建一个config.json文件,该文件可以包含与开发环境配置不同的数据。

示例config.json:

{
    "username" : "username1",
    "password" : "password123"
}

如果您需要index.js中的密码,请执行以下操作:

const fs = require('fs');

fs.readFile('./config/config.json', function(err, data) {
    if (!err) {
        const data = JSON.parse(data);
        const username = data.username;
        const password = data.password;

        // Use password here or store it in a local variable to use it later
    }
});

答案 2 :(得分:1)

您可以使用 environment variables

假设您有一个名为USERNAME的环境变量 您可以在Node.js应用程序中访问它,如下所示:

console.log( process.env.USERNAME )

您可以在启动应用程序时提供环境变量,如下所示:

USERNAME=example npm start

您可能还想查看名为 dotenv 的超酷项目,它将环境变量加载到.env文件中。

您可以将.env添加到.gitignore,凭据不会附带代码。