PHP $ _COOKIE参数执行

时间:2013-01-22 22:22:48

标签: php cookies

我无法找到我的请求因以下原因而失败的原因 我的PHP代码是:

if (isset($_COOKIE["user"])) {
   echo '<p><h3><strong>Welcome '.$_COOKIE["param"].'</strong></h3></p>'; .....

当我请求exec('ls -al')作为参数时,php代码没有运行命令。

在请求的响应中,它就像参数化一样:

Welcome exec('ls -al')

这次执行失败的原因是什么?

2 个答案:

答案 0 :(得分:3)

$_COOKIE["param"]是一个字符串。你在回应它。 应该运行任何东西。

如果您想在PHP中运行命令,则必须使用eval()。但至于从cookie值运行命令:

不要做!

答案 1 :(得分:0)

所以你说$_COOKIE['param']的价值是exec('ls -al'),你期望在你echo出来时运行吗?

这不是它的工作原理。该cookie的值将是字符串值“exec('ls -al')”,而不是执行代码的结果。如果您考虑一下,您就会明白为什么cookie能够自动执行代码是个坏主意。

无论如何,通过exec()运行随机命令并不是一个好主意,尤其是如果输入来自用户(cookie可以做 - 用户可以并将其更改为试着攻击你。)

相反,您应该使用其他输入,您的代码可以将其解释为运行某些代码的信号。例如,您可以让param值保存字符串list files,您的代码会看到该值并为您运行exec('ls -al')

仍然不应该是exec代码来执行此操作,因为这样很容易意外地运行危险命令。相反,您应该尽可能地使用PHP的内置函数,并且只有在清理输入并仅运行已知值之后才能使用。

对于您的情况,PHP具有a bunch of functions,可让您与服务器的文件系统进行交互。使用它们来获取系统上的文件列表。