仅对命令启用php-exec



我需要在php脚本中使用imagemagik的convert,所以我启用了exec。

现在,我觉得启用exec是不安全的,我想将其仅限于"convert"命令。

有办法做到吗?非常感谢

您不能限制PHPexec函数执行的命令。此外,即使您对exec函数进行了一些字符串检查,使其包含类似于"convert"的内容,我也可以绕过它,执行如下任意命令:

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

所以这不是一个解决方案。

建议:

a) 不要启用exec,只需使用ImageMagick PHP扩展:http://www.php.net/manual/en/book.imagick.php它就像命令提示符,但它是一个PHP扩展。使用这个PHP扩展,您可以使用ImageMagick的命令行界面完成您所做的一切。(推荐)

b) 尝试Imagemagick的替代方案,如果你只想转换/调整图像大小,有很多PHP类和扩展可以用于这些目的。

c) 编写您自己的PHP扩展,它将获得您想要传递给convert的参数,并让该扩展处理命令执行,但您需要大量清理传递给它的字符串和命令。

d) 正确设置文件权限,不允许通过web上传新文件(至少是可执行文件),为文件和文件夹设置正确权限,检查您的代码是否存在SQL注入、文件包含攻击和所有其他应用程序漏洞等,以确保您拥有安全的代码和服务器,现在如果您真的确信您的服务器是安全的,您可以启用exec,但是您不能限制将要执行的命令。(不推荐)

最新更新