上传假图片安全 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 了解更多信息和示例。
我正在构建一个 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 了解更多信息和示例。