2014-02-08 48 views
1

我需要在php脚本中使用imagemagick的转换,所以我启用了exec。只为命令启用php exec

现在我不想安全地让exec被启用,我想限制它只能用于“convert”命令。

有没有办法做到这一点?非常感谢

回答

4

您不能限制PHP exec函数的要执行的命令。此外,即使你做一些字符串检查EXEC有“转换”命令,我就可以这样执行我的命令:

"convert img.jpg img.png ; id ; ls -al ; wget ....." 

因此,这不是一个解决方案。

解决方案:

一)不要让高管,只是使用ImageMagick的PHP扩展: http://www.php.net/manual/en/book.imagick.php 这就像命令,但它的PHP扩展。您可以使用ImageMagick PHP扩展的命令行来完成您所做的一切。

b)正确设置文件权限,不允许通过网络(至少PHP文件)上传新文件,为文件和文件夹设置适当的权限,检查你的代码是否存在SQL注入,文件包含攻击等等。将有一个安全的服务器,现在如果你的服务器是安全的,你可以启用exec。 c)编写你自己的PHP扩展,它将得到convert命令的参数并运行它,然后在你的代码中使用它。总的来说,你不能限制命令的执行,黑客也可以运行其他命令。