我在图像中包装了一个可执行文件,其中包含以下内容 -
GIF89a<?php
echo 'hacked';
?>
并将其保存为文件名 image.gif 。
现在,当我上传此图片时,它可以绕过图片和尺寸验证。
'photo' => 'required|image|dimensions:min_width=20,min_height=20',
有没有办法验证这种图像?
我尝试过的解决方法 -
使用PHP函数getimagesize()
但它返回
array:6 [▼
0 => 16188
1 => 26736
2 => 1
3 => "width="16188" height="26736""
"channels" => 3
"mime" => "image/gif"
]
虽然图片无效,但仍然有效宽度和身高。
答案 0 :(得分:1)
当this article通知时,GIF文件有一个标题字段,后跟维度。您所做的事情具有在维度部分中有效的字节,因此将被解析为维度。这对于验证GIF imposer是不完整的。您需要对GIF字节进行更深入的分析,以确保它不包含有害的有效负载。