【发布时间】:2013-03-31 18:03:09
【问题描述】:
我正在尝试创建一个 php\shell 脚本来创建一个文件。我正在使用 exec() 命令来创建 shell 和 php 本身之间的链接。我也在尝试从用户那里接收数据,为此我有一个链接到脚本的 php 表单页面。
<?php
$username = $_POST['txt_username'];
exec("sudo echo $username > file.txt");
?>
根据我的研究,我发现 exec() 不接受 $_POST 或 $_GET 变量。我还尝试过extract()、getenv() 和var_dump() 等函数,以及escapeshellcmd() 和escapeshellarg()。有人可以帮我吗?
【问题讨论】:
-
exec()不知道字符串变量的来源。但是,您应该为 shell 上下文转义它们,@ 987654323@ 浮现在脑海中。而exec并不少见地受到服务器设置的限制。你为什么不使用 PHP-builtins 来写入文件? -
这是一个学校项目,我必须创建一个 php 表单页面来接收数据以输入用户的文件信息。我不能使用 php 内建函数。
-
@user2229813:我想你误解了mario:php有写入文件的功能,比如
file_put_contents()。为什么你不能使用它们? -
哎呀,这看起来很邪恶。不要那样做!让 PHP 编写这个文件。您将客户端输入直接传递给操作系统的命令行,这不仅仅是一个令人讨厌的安全漏洞。
-
想象一下,如果在 HTML 表单中输入的用户名正是
"foo; /bin/rm -rf /"字符串 - 没有双引号......