PHP exec安全吗?

Bar*_*art 11 php security exec

我试图让exec在Windows服务器上工作并收到错误消息"无法分叉".在谷歌搜索了一下之后,似乎推荐的修复方法是将IUSR帐户的READ和EXECUTE权限授予c:\ Windows\System32\cmd.exe.

但那已成为一个重要的安全漏洞吗?安全吗?还有另一种方法来执行[来自php]一个驻留在服务器上的exe吗?

Mif*_*Fox 15

它需要执行cmd.exe,因为当Windows PHP看到这个:

exec("foo -bar -baz");
Run Code Online (Sandbox Code Playgroud)

它称之为:

cmd /c foo -bar -baz
Run Code Online (Sandbox Code Playgroud)

如果您让用户输入参数,这只是一个安全漏洞.IE,你不应该这样做:

// DO NOT DO THIS!
exec("foo -bar=" . $_GET['bar']);
Run Code Online (Sandbox Code Playgroud)

相反,您应该使用escapeshellarg清理参数.

// This is okay.  (Be sure foo.exe can handle unexpected input!)
exec("foo -bar=" . escapeshellarg($_GET['bar']));
Run Code Online (Sandbox Code Playgroud)

  • exec功能和你做的一样安全.只要你使用这里显示的正确的转义函数,你就会很好. (4认同)
  • 虽然可以使脚本命令安全,但常见的攻击媒介是上传恶意脚本并使用“exec”和类似函数来入侵服务器。因此,许多共享托管环境禁用此功能和任何其他可以运行 shell 参数的功能。 (2认同)