Node.js:为exec()清除不受信任的用户输入

问题描述 投票:0回答:1

小示例,从REST API node.js应用程序简化:

const { exec } = require('child_process');
var userInput = 'untrusted source';
var cmd = `/bin/echo "${userInput}"`;
exec(cmd, function(err, stdout, stderr) {
    console.log('echo: ' + stdout);
});

假设userInput来自不受信任的来源,需要做些什么来避免任何漏洞?例如,用引号"${userInput}"引用的echo参数可避免输入'evil spirit; rm -rf /'造成损坏。要保持安全还需要做什么?

Update:目的是通过int >]网络上的REST API使文件系统中的一些现有Shell脚本/命令可用。

小示例,从REST API node.js应用程序简化:const {exec} = require('child_process'); var userInput ='不受信任的来源'; var cmd =`/ bin / echo“ $ {userInput}”`;; exec(cmd,function(err,stdout,...

javascript node.js security filter exec
1个回答
0
投票

基于child_process上的官方Node.js https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options文档,(显然)在不清理shell脚本的情况下使用用户输入是不安全的:

© www.soinside.com 2019 - 2024. All rights reserved.