上传假图片安全 concerns/prevention

Uploading of fake images security concerns/prevention

我正在构建一个 PHP 网络应用程序,它包括图像上传。我读过关于防止上传虚假图片的内容。但是什么是假图像以及如何使用它们来攻击服务器?

使用 PHP 函数 getimagesize() 并检查文件扩展名是否足以消除所有可能通过图像进行的攻击?

假图片的一个示例是有人上传 PHP 文件而不是图片,然后欺骗服务器执行它。有几种方法可以防止这种攻击,包括防止用户选择用于在服务器上存储图像的文件扩展名,以及将上传的图像存储在文档根目录之外(需要时使用 file_get_contents 读取它们) .

阅读@Chris explanation 来很好地解释什么是假图片。

伪造图像的目的是在您的服务器上放置可执行代码,因此将用户上传的图像存储在文档根目录之外是个好主意。另一个好主意是检查文件是否真的是图像。

可能是检查文件是否为有效图像的最快方法:

function isValidImage($file) {
  return ( false === exif_imagetype($file) ) ? FALSE : TRUE;
}

查看 http://php.net/manual/en/function.exif-imagetype.php 了解更多信息和示例。