WordPress – Modificações na validação de mime-type na versão 5.0.1

image_pdfimage_print

Quando um arquivo é enviado (upload), o WordPress verifica para ver o tipo real, para assim descobrir o verdadeiro tipo MIME. Isto é determinado a partir desta parte em wp_check_filetype_and_ext ():

$finfo = finfo_open (FILEINFO_MIME_TYPE);
$real_mime = finfo_file ($ finfo, $ file);

Isso vai dizer que o tipo mime real de um arquivo .xml é text / plain. Na versão anterior, apenas constar a extensão .xml já era suficiente para permitir o upload, no entanto, agora é necessário bater a extensão e o tipo do arquivo como permitido, ou qualquer um que falhar irá rejeitar o upload do arquivo com a mensagem: ‘Sorry, this file type is not permitted for security reasons.’

As alterações no wp_check_filetype_and_ext () no 5.0.1 tornaram a validação do tipo mime mais rigorosa. Agora está certificando-se que o tipo mime real do arquivo, descrito por $real_mime, deve coincidir com o da extensão do arquivo de wp_check_filetype (), se é suportado.

A razão pela qual o upload de .vtt ou xml falha em 5.0.1 é que o tipo real text / plain não é o mesmo que text / vtt da extensão de arquivo .vtt suportada ou text/xml ou application/xml.

Antes da 5.0.1 a saída de wp_check_filetype_and_ext () ao fazer o upload de um arquivo .vtt:

Array ([ext] => vtt [tipo] => text / vtt [proper_filename] =>)

Após 5.0.1 a saída é:

Array ([ext] => [type] => [proper_filename] =>)

Usar o filtro wp_check_filetype_and_ext pode sobrescrever a lógica introduzida no 5.0.1.

O mesmo parece acontecer para arquivos .csv na nova versão.

O patch principal sugerido é adicionar o .csv ao tipo mime text / plain wp_get_mime_types ():

 // Formatos de texto.
 ‘txt|asc|c|cc|h|srt|csv|xml’ => ‘text/plain’,

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!