我正在使用字符串连接向child_process.exec
命令添加参数,并忽略它们
var exec = require( "child_process" ).exec;
var cmd = exec( "grunt build --project="+application, {
cwd: application
},
function( error, stdout, stderr ){});
cmd.stdout.pipe( process.stdout );
cmd.stderr.pipe( process.stderr );
为什么字符串连接成为问题以及如何避免它?
答案 0 :(得分:3)
您的代码容易受到command injection的攻击。这取决于application
来自哪里,您需要确保它不能由用户自定义。
示例中的恶意代码为
var application = '; rm -rf .'
但由于您还尝试通过pwd
更改当前目录,因此无法使用。
general recommendation要谨慎对待child_process.exec
并改为使用child_process.execFile
或child_process.spawn
。
答案 1 :(得分:0)
检查你的grunt构建任务以查看是否有任何错误。在child_process.exec
中使用字符串连接的代码没有任何问题