NodeJS - как безопасно хранить ip, имя пользователя и пароль базы данных? - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть код NODEJS для подключения к базе данных MySql:

var mysql = require('mysql')
var express = require('express')
var app = express()

var connection = mysql.createPool({
    connectionLimit: 50,
    host     : 'ip',
    user     : 'username',
    password : 'pass',
    database : 'mydb'
});


app.get('/', function(req, resp) {
    connection.getConnection(function(error, tempCont) {
        if(!!error) {
            tempCont.release();
            console.log('Error');
        } else {
            console.log('Connected!');

            tempCont.query("select * from table", function(error, rows, fields) {
                tempCont.release();
                if(!!error) {
                    console.log('Error in the query');
                } else {
                    resp.json(rows);
                }
            });
        }
    })
})

console.log("listening requests...")
app.listen(1337);

Как защитить ip, имя пользователя и пароль, используемые для подключения к базе данных, чтобы их не было видно в коде или файле конфигурации

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Установите модуль env: npm install --save dotenv

Создайте файл .env в корневой папке и запишите код

DB_CONLIMIT='50'
DB_HOST='ip'
DB_USER='username'
DB_PASSWORD='pass'
DB_DATABASE='mydb'

В своем jsфайл

var mysql = require('mysql');
var express = require('express');
var app = express();
const dotenv = require('dotenv');

var connection = mysql.createPool({

     connectionLimit : process.env.DB_CONLIMIT,
     host            : process.env.DB_HOST,
     user            : process.env.DB_USER ,
     password        : process.env.DB_PASSWORD ,
     database        : process.env.DB_DATABASE 
});
0 голосов
/ 01 октября 2018

Вы должны настроить свои системы так, чтобы ваша служба работала как собственный пользователь со своими собственными защищенными файлами.Это обеспечивает некоторую защиту, так что даже если другая служба скомпрометирована, доступ злоумышленника будет изолирован от других компонентов вашей системы.Не запускайте все как root.

Что касается того, как секреты хранятся и к ним обращаются, решать вам.Вы можете иметь файл конфигурации, если хотите.Другой вариант - использовать переменные окружения.В конечном счете;тем не менее, ваши секреты нужно будет хранить в открытом тексте, чтобы ваша система могла их прочитать и использовать.

Еще один метод, о котором стоит упомянуть, - вы можете отделить свои секреты от своих приложений, имея специальную службу секретов.Все ваши приложения должны были бы знать об этой услуге, и оттуда они могли бы запрашивать секреты, необходимые для их нормальной работы.При этом очевидно, что все ваши приложения зависят от службы секретов при запуске - в противном случае ваши приложения не смогут запускаться или перезапускаться.

...