所以我试图从我的shell中运行node.js script命令:

var child = exec('mysqldump -u "'+dbConfig.user+'" --password="' + dbConfig.password + '" --single-transaction ' + dbConfig.database + ' > ' + dumpFilePath)

现在这一切都很好,但是password可以包含特殊字符来中断命令。
我一直在研究这个节点模块:https://www.npmjs.com/package/shell-escape
但是它的一个问题是不能解析=符号。这使得这个包对上面的声明毫无用处。
所以我的问题是如何安全地逃离密码字段?

最佳答案

您可以使用单引号安全地转义密码:

var child = exec('mysqldump -u ' + dbConfig.user + ' --password=\'' + dbConfig.password + '\' --single-transaction ' + dbConfig.database + ' > ' + dumpFilePath)

07-26 02:26