我找不到以下请求失败的原因
我的 php 代码是:
if (isset($_COOKIE["user"])) {
echo '<p><h3><strong>Welcome '.$_COOKIE["param"].'</strong></h3></p>'; .....
当我作为参数请求时exec('ls -al')
,php 代码没有运行该命令。
在请求的响应中,它就像参数化:
Welcome exec('ls -al')
这次执行失败的原因可能是什么?
所以你说 is 的值$_COOKIE['param']
,exec('ls -al')
并且你期望它在你结束时运行echo
?
这不是它的工作原理。该 cookie 的值将是字符串值“exec('ls -al')”,而不是执行代码的结果。如果你想一想,你就会明白为什么让 cookie 能够自动执行代码是个坏主意。
exec()
无论如何运行随机命令并不是一个好主意,特别是如果该输入来自用户(哪些 cookie 可以 - 用户可以并且将更改它们以尝试攻击您)。
相反,您应该使用其他输入,您的代码可以将其解释为运行某些代码的信号。例如,您可以让param
值保存字符串list files
,您的代码会看到该值并exec('ls -al')
为您运行。
但是,您仍然不应该exec
编写代码来执行此操作,因为这样很容易意外运行危险的命令。相反,您应该尽可能多地使用 PHP 的内置函数,并且仅在清理您的输入并且只运行已知值之后。
对于您的情况,PHP 有很多函数可以让您与服务器的文件系统进行交互。使用这些来获取系统上的文件列表。