当前位置: 首页 > 面试题库 >

PHP文件上传:基于mime或扩展名的验证?

宫俊才
2023-03-14
问题内容

当我尝试处理文件上传时,是否应该基于文件MIME类型或文件扩展名运行验证?

这两种文件验证方式的优缺点是什么?

而且,我应该关注其他任何安全问题吗?

这些天来,我一直依靠MIME类型,但是这篇文章中投票最多的答案是

PHP中的文件上传问题说:

永远不要依赖浏览器提交的MIME类型!


问题答案:

好的,对于这里的所有热心人士,我都在讲一些关于“螺丝扩展,检查MIME!FILEINFO RLZ!”的内容,我已经准备了一些教程:

  1. html" target="_blank">下载我画的这个漂亮的php徽标
  2. 查看它。很好,不是吗?
  3. 将其重命名为what_you_like.php
  4. 放入所有超赞的MIME类型/任何检查器中
  5. 运行

总之,你永远也不会 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的形式接收