使用sails.js时,如何安全地存储连接字符串

ACo*_*der 4 encryption node.js sails.js

我在config\adapters.js中有一个数据库连接字符串,如下所示.我不想以纯文本形式保留连接字符串.保护该信息以及服务可以调用和连接到数据库的最佳方法是什么?

module.exports.adapters = {

  // If you leave the adapter config unspecified 
  // in a model definition, 'default' will be used.
  'default': 'mssql',

    mssql: {
        connectionString: 'Driver={SQL Server Native Client 10.0};Server=foo.domain.com;Database=RODDY;Uid=jsmith;Pwd=nw0ow21',
        module: 'sails-mssql'
    }

};
Run Code Online (Sandbox Code Playgroud)

gor*_*ive 6

所有其他答案都是很好的答案,这是另一种方法.

设置一个名为SQL_STRING的环境变量..

这假设你在ubuntu上..

#edit /etc/profile or ~/.profile
vim /etc/profile;
#add this line to it.
export SQL_STRING=<insert your sql string>
Run Code Online (Sandbox Code Playgroud)

现在在你的config/local.js文件中添加这个connectionString:

connectionString: process.env.SQL_STRING
Run Code Online (Sandbox Code Playgroud)

这将加载连接字符串作为环境变量.这会做两件事,

  1. local.js如果需要,您现在可以提交您的仓库,无论您在何处部署应用程序,它都将继承env设置的变量.这对于开发环境等很有用.

  2. 从应用程序文件中删除安全数据,以便没有人可以查看它们,他们必须进行一些挖掘以获取实际数据.

我目前在sailsjs应用程序的生产中执行此操作,我有一个特殊sails用户,其中包含~/.profile我的所有MAILGUN,db和其他凭据数据定义为环境变量.此用户受限于sudo,ssh访问,并被锁定以仅访问一个或两个文件夹.

实际上,只有那些可以看到这些环境变量的人才是root用户.