什么是最好的和MSIT的安全方式,以获得MIME类型的文件?我已经发现了这一点:获取文件MIME类型的最佳方式在php
http://de3.php.net/manual/de/ref.fileinfo.php
但FileInfo的()似乎是容易操纵。有没有更好的方法来获取文件MIME类型?顺便说一下,我需要它的图像文件。
什么是最好的和MSIT的安全方式,以获得MIME类型的文件?我已经发现了这一点:获取文件MIME类型的最佳方式在php
http://de3.php.net/manual/de/ref.fileinfo.php
但FileInfo的()似乎是容易操纵。有没有更好的方法来获取文件MIME类型?顺便说一下,我需要它的图像文件。
和getimagesize()返回的MIME类型也 http://php.net/manual/en/function.getimagesize.php
<?php
//png image called gif
$image = 'temp.gif';
$size = getimagesize($image);
if (isset($size['mime']) && $size[0]>0 && $size[1]>0) {
echo"Content-type: {$size['mime']}";
//outputs Content-type: image/png
} else {
echo"not an image";
}
?>
这里的另一种方式
<?php
$info = getimagesize("image.gif");
$type = $info['mime'];
?>
但它会帮助,如果你可以说你的“安全”和什么样的意思到底是什么操纵你的想法。
你总是可以自己扫描文件的魔术字节和不是。我相信在PECL中有一堆方便的funcs,但是由于它们在目标托管上的可用性可能会有所不同,所以您可能希望采取艰难的方式。例如参见本 -
http://www.garykessler.net/library/file_sigs.html
- 文件签名(或魔法字节,或任何他们现在被称为)。您知道要接受哪种文件类型,因此只需扫描传入文件以获取一组签名。
另一个选项是允许PHP运行unix shell并使用带有相应标志的file
命令来测试您的文件并根据实际文件内容获取真实的mime类型。