Boas?!
Como o próprio título diz posso realmente confiar em obter o mime-type do arquivo através da classe finfo?
Ao logo dos anos sempre para uploads de arquivos para o servidor, como os sistemas que eu desenvolvi um upload só podia ser realizado por um administrador, apenas verificava a extensão do arquivo através da chave "type" na super global $_FILES.
Mas sempre soube que não podia confiar em tal.
No mais simples podemos enganar a chave "type" criando um arquivo de texto qualquer e salvando com a extensão .JPG se consultamos por exemplo $_FILES['upload']['type'] teremos então o mime-type image/jpg mesmo o arquivo de fato sendo um .TXT
(A proposta não se trata só de imagens mas qualquer tipo de arquivo, apenas usei uma imagem para exemplificar)
Mas usando a classe finfo essa obtive o correto modelo de arquivo.
<?php
$finfo = new finfo(FILEINFO_MIME);
$mimeType = $finfo->file($_FILES['upload']['tmp_name']);
echo "<pre>";
var_dump(
substr($mimeType, 0, strpos($mimeType, ';')),
$_FILES['upload']['type']
);
Mas seria possível enganar o método?
Obs.: Se houver como não poste código nesse contexto, apenas quero saber de possíveis vulnerabilidades dessa classe nativa que até então nunca utilizei.