【发布时间】:2015-02-02 16:28:09
【问题描述】:
我必须从 php webservice 以 root 权限运行 python 脚本
$telephoneNumber = $_REQUEST["telephoneNumber"];
$textMessage = $_REQUEST["textMessage"];
$command = "sudo python /home/frank/Desktop/Main.py singular $telephoneNumber \"$textMessage\"";
system($command, $output);
$outVO->setOutcome(1);
$outVO->setDescription($output);
return $outVO;
但网络服务的专有是www-data,所以不起作用
【问题讨论】:
-
请注意这是非常危险的代码。想象一下,如果有人提交一个号码或消息,如
\"; sudo rm -rf /; -
在我看来这并不危险,因为数字和文本都是简单的字符串,它们将被传递给处理发送短信的 GSM 模块
-
你错了。如果用户包含
;(或使用各种其他技巧),则以下文本不会作为参数传递给您的 Python 脚本,而是由 shell 作为单独的命令进行评估。即使您将sudo限制为特定命令,恶意用户仍然可以做不受欢迎的事情。阅读documentation 中的警告。 -
你说得对!!!