Node.js 文件中的 javascript 敏感信息?
Node.js sensitive information in javascript file?
在 Node.js 服务器上的 JavaScript 文件 运行 中包含敏感信息(例如数据库连接详细信息)是否安全?
例如:
var mysql = require('db-mysql');
new mysql.Database({
hostname: 'localhost',
user: 'user',
password: 'password',
database: 'test'
}).on('error', function(error) {
console.log('ERROR: ' + error);
}).on('ready', function(server) {
console.log('Connected to ' + server.hostname + ' (' + server.version + ')');
}).connect();
由于JavaScript文件是客户端文件,在使用开发者工具的典型浏览器上是否无法通过客户端看到此信息?
是的,这样做是安全的。客户只能访问您从您的应用程序发送给他的内容。这不是客户端文件,它是 node.js 和您的应用程序服务器端文件。请记住不要将此文件与您将发送给客户的其他 JS 文件(例如 jquery 等)包含在一起。
虽然是安全的,但是如果在服务器上启用了目录浏览呢?
由于您是在服务器端执行脚本,因此无法在客户端查看相同的代码。按照与 PHP 脚本或类似脚本相同的思路来考虑它。然而,正如已经指出的那样,如果您将脚本放在可公开访问的目录中,那么人们 可以 看到代码。
将您的凭据直接放置在 内部 您的脚本中的几个替代方法可能是将您的凭据安全地(例如,使用适当的 file/user 权限)移动到某些文件中的文件您的脚本从 或 读取的其他目录从环境中获取您的凭据,例如:
# DB_USER=foo DB_PASS=bar node myscript.js
然后在你的脚本中:
new mysql.Database({
hostname: 'localhost',
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: 'test'
// ...
在 Node.js 服务器上的 JavaScript 文件 运行 中包含敏感信息(例如数据库连接详细信息)是否安全? 例如:
var mysql = require('db-mysql');
new mysql.Database({
hostname: 'localhost',
user: 'user',
password: 'password',
database: 'test'
}).on('error', function(error) {
console.log('ERROR: ' + error);
}).on('ready', function(server) {
console.log('Connected to ' + server.hostname + ' (' + server.version + ')');
}).connect();
由于JavaScript文件是客户端文件,在使用开发者工具的典型浏览器上是否无法通过客户端看到此信息?
是的,这样做是安全的。客户只能访问您从您的应用程序发送给他的内容。这不是客户端文件,它是 node.js 和您的应用程序服务器端文件。请记住不要将此文件与您将发送给客户的其他 JS 文件(例如 jquery 等)包含在一起。
虽然是安全的,但是如果在服务器上启用了目录浏览呢?
由于您是在服务器端执行脚本,因此无法在客户端查看相同的代码。按照与 PHP 脚本或类似脚本相同的思路来考虑它。然而,正如已经指出的那样,如果您将脚本放在可公开访问的目录中,那么人们 可以 看到代码。
将您的凭据直接放置在 内部 您的脚本中的几个替代方法可能是将您的凭据安全地(例如,使用适当的 file/user 权限)移动到某些文件中的文件您的脚本从 或 读取的其他目录从环境中获取您的凭据,例如:
# DB_USER=foo DB_PASS=bar node myscript.js
然后在你的脚本中:
new mysql.Database({
hostname: 'localhost',
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: 'test'
// ...