如果我将jpg标题(jpg文件的第一行)放在HTML文件中并使用jpg扩展名保存,那么我可以绕过MIME类型检查。 例如:
ÿØÿà JFIF d d ÿì Ducky < ÿî Adobe dÀ ÿÛ „
hyuhjjh
<script>
alert(hello);
</script>
如果我将上述代码保存为JPG文件,则可以绕过MIME类型检查。
echo mime_content_type('x.html.jpg'); //shows 'image/jpeg'
我希望脚本检查上传的文件内容纯粹是该内容类型(jpg / png或pdf或3gp / mov)。适用于图像,文档和视频类型。
或者不包含任何脚本。
其实我需要Drupal。所以我必须使用自定义PHP代码。 在Drupal 7.50中,我使用了&#34;文件上传安全验证器&#34;验证上传的文件MIME类型,但对于上述类型的情况没用。
答案 0 :(得分:1)
您需要使用某个库来实际加载该文件。对于图像,我使用GD打开目标图像并检查它是否返回了合理的高度和宽度。
其他类型也可以这样做。我想对于视频文件来说这可能是非常需要资源的,但这是唯一确定的方法。