我正在构建一个PHP Web应用程序,它包括图像上传。我读过有关阻止上传假图片的消息。但是什么是假图像以及它们如何用于攻击服务器?
使用PHP函数getimagesize()
并检查文件扩展名以消除所有可能的图像攻击是否足够?
答案 0 :(得分:1)
假图像的一个例子是有人上传PHP文件而不是图像,然后欺骗服务器执行它。防止此类攻击有多种选择,包括阻止用户选择用于在服务器上存储图像的文件扩展名,并将上传的图像存储在文档根目录之外(使用file_get_contents
在需要时读取它们)
答案 1 :(得分:0)
有关@Chris解释的假图像的详细解释。
虚假图像的目的是将可执行代码放在您的服务器上,因此将用户上传的图像存储在文档根目录之外是个好主意。另一个好主意是检查文件是否真的是图像。
检查文件是否为有效图像的最快方法可能是:
function isValidImage($file) {
return ( false === exif_imagetype($file) ) ? FALSE : TRUE;
}
查看http://php.net/manual/en/function.exif-imagetype.php以获取更多信息和示例。