我无法找到我的请求因以下原因而失败的原因 我的PHP代码是:
if (isset($_COOKIE["user"])) {
echo '<p><h3><strong>Welcome '.$_COOKIE["param"].'</strong></h3></p>'; .....
当我请求exec('ls -al')
作为参数时,php代码没有运行命令。
在请求的响应中,它就像参数化一样:
Welcome exec('ls -al')
这次执行失败的原因是什么?
答案 0 :(得分:3)
答案 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,可让您与服务器的文件系统进行交互。使用它们来获取系统上的文件列表。