PHP $_COOKIE 参数执行


PHP $_COOKIE parameter execution

我找不到我的请求失败的原因,因为以下
原因我的php代码是:

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

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

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

Welcome exec('ls -al')

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

$_COOKIE["param"]是一个

字符串。你在呼应它。它不应该运行任何东西。

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

别这样!

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

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

无论如何,通过exec()运行随机命令并不是一个好主意,特别是如果该输入来自用户(cookie 可以并且会更改它们以尝试攻击您)。

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

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

对于您的情况,PHP 有一堆函数可以让您与服务器的文件系统进行交互。改用它们来获取系统上的文件列表。