MSOffice2007文件的PHP 5.3.5 fileinfo()MIME类型-magic.MIME更新?
在PHP上传中,我试图验证上传文件的MIME类型,以匹配应用程序的有效MIME类型集。尝试使用fileinfo()确定Office 2007文件的MIME类型时,它没有检测到相应的MIME类型。相反,MIME类型的响应是“application/zip” 办公室文档MIME类型: PHP代码示例: $oFileInfo=新的finfo(FILEINFO\u MIME\u类型) $sMimeType=$oFileInfo->file($\u FILES['Filedata']['tmp\u name']) echo$sMimeType 服务器设置信息:MSOffice2007文件的PHP 5.3.5 fileinfo()MIME类型-magic.MIME更新?,php,mime-types,detection,Php,Mime Types,Detection,在PHP上传中,我试图验证上传文件的MIME类型,以匹配应用程序的有效MIME类型集。尝试使用fileinfo()确定Office 2007文件的MIME类型时,它没有检测到相应的MIME类型。相反,MIME类型的响应是“application/zip” 办公室文档MIME类型: PHP代码示例: $oFileInfo=新的finfo(FILEINFO\u MIME\u类型) $sMimeType=$oFileInfo->file($\u FILES['Filedata']['tmp\u na
- 操作系统:Windows Server 2003 32位
- Web服务器:IIS 6.0
- PHP:5.3.5(线程安全)使用FastCGI 1.5
- 文件:magic.mime
- darko在uvcms.com上的示例2008年4月16日09:35
- 链接:php.net/manual/en/fileinfo.installation.php
- 大小:517KB
- 来源:Source Forge:GNU32-FileType gnuwin32.sourceforge.net/packages/FileType.htm
- darko在uvcms.com上的示例2008年4月16日09:35
magic.mime
$\u文件['Filedata']['type']
)finfo()
返回application/zip
是合理的
如果你真的想根据文件的内容(而不是上传时的MIME类型浏览器报告)确定文件类型,我建议解压或列出内容以检查其结构。你是否尝试将新的MIME类型添加到IIS
较新的Office文件实际上是ZIP存档。这就是为什么MIME Magic数据库将它们检测为ZIP文件。您可能需要根据文件扩展名添加特殊规则,或者查看ZIP文件是否有
docProps
文件夹(Office ZIP归档文件有这样一个包含文档元数据的文件夹)
还有其他文件格式实际上是具有不同扩展名的ZIP存档,例如JAR文件
例如,有人建议编写一个函数来解压缩压缩文件,然后检查是否存在“DocProps”目录。但这会给生产服务器带来另一种攻击载体。抱歉,这不是web服务器的问题。问题是验证上载的实际文件的MIME是否有效。是的,但php可能正在使用webserver MIME表来标识文件MIME类型。如果php Fileinfo finfo()使用的不是安装要使用的magic.MIME文件,我会非常惊讶。但是,在使用.docx和.xlsx MIME类型在IIS上添加MIME类型进行测试后,情况保持不变。使用“new finfo(FILEINFO_MIME_TYPE);”当前(未弃用的manor)是否正确?据我所知,mime_content_type()函数实际上是不推荐使用的。问题当然是,如何更新magic.mime文件,有什么线索吗?jmz,是的,我知道它们是ZIP存档。但是,对于office 2007+文件,在filext.com/faq/office_MIME_types.php上可以找到MIME类型。我非常确定我需要一个更新的magic.mime文件来检测这些。如果找不到更新的magic.mime,则可以将实际的magic.mime行添加到各种Office 2007+扩展名的现有magic.mime文件中。有些信息告诉我magic.mime文件的语法和方法不为许多人所知,因为似乎没有人知道该解决方案。我发现了很多帖子,人们说不要弄乱你的magic.mime文件,以免弄坏它。遗憾的是,他们都没有指出一个地方来了解文件的工作原理。在这里,我认为微软正在整理东西以提高安全性。:-)