1

我正在尝试创建一个 PHP 脚本,该脚本通过 ssh 在远程 linux 服务器上创建一个文件,并将文件内容回显到其中。

但是,我无法弄清楚如何正确和安全地编码/转义文件内容,以便内容不会被解释为命令。

我从这里使用 phpseclib 。

我试过类似的东西

echo $ssh->exec('sudo echo "' . escapeshellarg($newConfig) . '" > /etc/nginx/nginx.conf') . "\n";

但没有成功。

谢谢,

史蒂夫

4

2 回答 2

1

那么escapeshellcmd呢?引用那个 vs escapeshellarg 的描述:

escapeshellarg() 在字符串周围添加单引号并引用/转义任何现有的单引号,允许您将字符串直接传递给 shell 函数并将其视为单个安全参数。

...和...

escapeshellcmd() 转义字符串中可能用来欺骗 shell 命令执行任意命令的任何字符。此函数应用于确保来自用户输入的任何数据在传递给 exec() 或 system() 函数或反引号运算符之前被转义。

以下字符以反斜杠开头:#&;`|*?~<>^()[]{}$\、\x0A 和 \xFF。' 和 " 仅在它们未配对时才被转义。在 Windows 中,所有这些字符加上 % 都被替换为空格。

于 2013-10-29T18:46:27.510 回答
0

我做错了,我应该用Net_SFTP而不是NET_SSH做这种事情。

于 2014-04-15T15:29:48.523 回答