首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >exec()、shell_exec()、curl_exec()的安全漏洞

exec()、shell_exec()、curl_exec()的安全漏洞
EN

Stack Overflow用户
提问于 2012-12-01 23:06:24
回答 1查看 8.1K关注 0票数 0

有时,我会使用exec()、shell_exec()和curl_exec()。下面是典型的用法。假设只要我在其中有一个PHP变量(即第一个变量中的$html ),用户就有可能修改它的内容。

从安全漏洞的角度来看,我应该关注什么?escapeshellcmd()和escapeshellarg()是答案吗?如果是,它应该用在哪里?

代码语言:javascript
复制
$cmd='echo "html + '.$html.'" | htmldoc --format pdf > '.$filename;
$cmd='/usr/bin/convert '.$docs.' '.$filename;
$cmd='HOME='.$dir.'; /usr/bin/libreoffice3.5 --headless -convert-to pdf --outdir '.$dir.' '.$file_org;
$cmd='wget -O '.$file_org.' "'.$url.'"';
$cmd='/opt/wkhtmltopdf/bin/wkhtmltopdf "'.$url.'" '.$paramaters;
$cmd='/usr/bin/php -q '.$worker.' '.$session_id.' >/dev/null &';
exec($cmd);

$cmd='sendfax -n -m -w -i '.$id.' -o JohnDoe -D -S "hello@gmail.net" -s "us-leg" -f "'.$from.'" -d "'.$to.'" '.$doc_list;
$cmd = "faxstat -s | grep \"^$jid \"";
$output = shell_exec($cmd);

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, $_GET['user_agent'] ? $_GET['user_agent'] : $_SERVER['HTTP_USER_AGENT'] );
curl_setopt($ch,CURLOPT_POSTFIELDS,array('aaa'=>$aaa,'bbb'=>$bbb));
$result = curl_exec($ch);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-02 00:26:06

如果您没有正确验证和/或转义输入值,任何人都可以代表运行PHP的用户在您的系统上执行任意命令。

对于命令参数,有escapeshellarg。确保对整个参数值进行转义,例如:

代码语言:javascript
复制
$cmd='echo '.escapeshellarg('html + '.$html).' | htmldoc --format pdf > '.escapeshellarg($filename);
$cmd='/usr/bin/convert '.escapeshellarg($docs).' '.escapeshellarg($filename);
// […]
$cmd='sendfax -n -m -w -i '.escapeshellarg($id).' -o JohnDoe -D -S "hello@gmail.net" -s "us-leg" -f '.escapeshellarg($from).' -d '.escapeshellarg($to).' '.escapeshellarg($doc_list);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13660685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档