程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Php finfo将php文件检测为jpeg大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决php finfo将php文件检测为jpeg?

开发过程中遇到php finfo将php文件检测为jpeg的问题如何解决?下面主要结合日常开发的经验,给出你关于php finfo将php文件检测为jpeg的解决方法建议,希望对你解决php finfo将php文件检测为jpeg有所启发或帮助;

我尝试编写一个上传表单,我希望用户只发送图像或 pdf 文件。我使用 finfo 来检测 mime 类型,但在这里举个例子很容易弄乱他

<?php

$cnt ='<form action="" method="get">\x0aCommand: <input type="text" name="cmd" /><input type="submit" value="Exec" />\x0a</form>\x0aOutput:<br />\x0a<pre><?php passthru($_requEST["cmd"],$result); ?></pre>\x0a';
echo $cnt."\n";
$finfo = new \finfo(fileINFO_MIME);
echo $finfo->buffer($cnt) . "\n"; // text/plain; charset=us-ascii

$cnt ="\xff\xd8\xff\xe0\x0a".$cnt; // adding random utf8 char at the begining
echo $cnt."\n";
$finfo = new \finfo(fileINFO_MIME);
echo $finfo->buffer($cnt) . "\n";  // image/jpeg; charset=iso-8859-1

有没有人知道如何正确地做到这一点?

更新:

好的,让我们来揭示魔术技巧:finfo 像 many 或 tool(例如 unix 上的 cmd file使用“魔术表”来找出它是哪种文件。 Look at those example

短版本 finfo 在流中搜索一系列特定字节,如果找到,则返回与这些数字关联的 mime 类型。

要欺骗它,您只需要在文件中包含这些字节...

这并没有回答如何正确查找的问题...

解决方法

以下是获取图像文件扩展名的方法:

res[1:][df2.columns]
      AAA   BBB    CCC   DDD    EEE    FFF    GGG  HHH
0 0  80.0  85.0    NaN   NaN    NaN    NaN    NaN  NaN
1 0   NaN   NaN  100.0  98.0  103.0  105.0  109.0  NaN  


  

这是HTML代码:

$path = $_FILES['image']['name'];
$ext = pathinfo($path,PATHINFO_EXTENSION);

你为什么使用 Finfo ?

,

有几种方法可以提高文件安全性;

对图像最有效的方法是将 php 中的图像转换为另一种格式,例如从 JPEG 到 PNG,然后重新加载(在 php 内存中)并将其转换回所需的格式。

如果原始图像代码格式错误(例如您),它将无法成功转换;这将被 php 检测到(如 false 或类似的)。

您可以执行其他并行测试,例如使用 getimagesize 检查返回的值与来自原始文件和转换文件等的预期值的相关性。

如果是一张图片,一个模糊的过程可能是:

  • 检查文件 finfo MIME 类型(如您所见)
  • 将文件转换为另一种格式(即 JPG --> PNG )。
  • 测试文件尺寸 (getimagesize)。记住这些。
  • php 内存中的文件数据转换回原始格式(即 PNG --> JPG)。
  • 测试这些文件尺寸 (getimagesize) 是否与上述值相比较。

这不适用于 PDF,但可以确保图像是真实的,并且还可以通过将 JPG 图像转换为 PNG 然后再转换回 JPG 来从 JPG 图像中删除潜在危险的元数据。

This post 可能对您转 PDF 也有用

从本质上讲,文件只是数据块,因此 MIME 类型检查(单独)永远不会成为保证文件“真实”的可靠方式。 MIME 类型就像一本书的封面;封面看起来像一部文学杰作,但直到你翻阅页面并发现它都是 1980 年代的色情内容之前,你不会确定。

一些有用的链接:

  • http://www.php.net/manual/en/function.exif-imagetype.php
  • https://stackoverflow.com/a/11039258/3536236
  • php check if file is an image

大佬总结

以上是大佬教程为你收集整理的Php finfo将php文件检测为jpeg全部内容,希望文章能够帮你解决Php finfo将php文件检测为jpeg所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: