如何避免在节点child_process exec中注入命令

问题描述

我正在使用Node child_process通过电子应用程序打开IE浏览器。下面的代码:

var cp = require('child_process');      
var browser = cp.exec('start','iexplore',['-private',args.url]);

当我对此代码运行Fortify分析时,这将引发命令注入警告。另外,此args.url是从api资源(存储在db中)中获取的,并且与该客户端应用程序上的任何用户输入都不相关。

请帮助我逃避这个问题。我也尝试过spawn,但没有成功。

解决方法

根据经验,无论输入是用户提供的还是从数据库中提取的,您都不能信任任何类型的输入。

避免使用exec()函数,而应使用execFile()。 execFile()函数将执行一个命令,并且默认情况下不会生成shell,这使其比exec()更安全

var cp = require('child_process');      
var browser = cp.execFile('iexplore',['-private',args.url]);

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...