当我尝试处理文件上传时,是否应该基于文件MIME类型或文件扩展名运行验证?
这两种文件验证方式的优缺点是什么?
而且,我应该关注其他任何安全问题吗?
这些天来,我一直依靠MIME类型,但是这篇文章中投票最多的答案是
PHP中的文件上传问题说:
永远不要依赖浏览器提交的MIME类型!
好的,对于这里的所有热心人士,我都在讲一些关于“螺丝扩展,检查MIME!FILEINFO RLZ!”的内容,我已经准备了一些教程:
总之,你永远也不会 EVER 依靠MIME类型。您的Web服务器不关心MIME类型,它决定通过 EXTENSION 来做什么,最终被
_淘汰的@Col。 Shrapnel_的答案实际上是正确的。执行MIME检查时提供给您的任何信息与您的Web服务器 绝对 无关。
编辑: 不像您想要的那样罕见,它将为这种攻击打开一个网站:
<?php
$mimetype = mime_content_type($_FILES['file']['tmp_name']);
if(in_array($mimetype, array('image/jpeg', 'image/gif', 'image/png'))) {
move_uploaded_file($_FILES['file']['tmp_name'], '/whatever/something/imagedir/' . $_FILES['file']['name']);
echo 'OK';
} else {
echo 'Upload a real image, jerk!';
}
问题内容: 我正在将图像上传到servlet。通过检查文件头中的幻数,仅在服务器端验证上传的文件是否为图像。在将表单提交给Servlet之前,有什么方法可以在客户端验证扩展?我一按回车就开始上传。 我在客户端使用Javascript和jQuery。 更新: 我最终通过服务器端验证结束了工作,该验证读取字节,如果不是图像,则拒绝上传。 问题答案: 可以仅检查文件扩展名,但是用户可以轻松地将virus
我正在用PHP做一个简单的网站,我正在使用DropzoneJS上传文件 我尝试只允许以下扩展: pdf、png、jpg、jpeg、bmp和txt . 有什么帮助吗?抱歉英语不好 这是我的upload.php代码 干杯,先生。
我正在创建一个Zend Framework应用程序,用户可以在其中上载配置文件图像。可接受的文件类型为png、jpg和gif。图像最终被存储为用户id和文件扩展名。 我想知道的是,假设用户上传png或gif文件,将文件扩展名更改为jpg是否安全? 这样,所有的配置文件图像都将具有相同的文件扩展名,我只是不确定这样更改文件类型是否是一个好主意。
问题内容: 我检查文件扩展名是否已上传。我的示例方法有效,但是现在我需要了解我的方法(使用)是否正确。还有另一种更好更快的方法吗? 问题答案: 使用)可能没有效率。如果您允许20个不同的扩展名怎么办? 尝试:
问题内容: 我有一个上传脚本,需要检查文件扩展名,然后基于该文件扩展名运行单独的功能。有人知道我应该使用什么代码吗? 问题答案: 是您要寻找的 PHP.net
问题内容: 我正在学习swift,并制作了一个表格,其中包含显示图像的单元格,以及按MIME TYPE(使用路径扩展名)分组的类。我有一个关于扩展的问题。如果图像(例如,可能是视频或pdf)是从Internet上获取的,我不确定它们是否具有扩展名, 如何在不使用路径扩展名的情况下获取文件系统中文件的MIME类型? PS:很抱歉我的英语不好,这不是我的母语 问题答案: 假设您以NSData的形式接收