Hace unos meses publiqué unos tutoriales para crear formularios externos para colaboradores externos. En uno de ellos se hablaba de cómo permitir a un usuario colaborador subir archivos a WordPress, para por ejemplo, agregar imágenes a sus artículos.
Me han comentado la preocupación de que estos usuarios colaboradores puedan subir archivos malintencionados aprovechando sus permisos de subida de archivos a WordPress.
Especificar únicamente los archivos permitidos
Para asegurarnos, podemos limitar el tipo de archivos permitidos para subir a WordPress utilizando la función:
function restringir_tipos_de_archivo($mime_types){
$mime_types = array(
'jpg|jpeg|jpe' => 'image/jpeg',
'gif' => 'image/gif',
'png' => 'image/png',
'pdf' => 'application/pdf'
);
return $mime_types;
}
add_filter('upload_mimes', 'restringir_tipos_de_archivo');
Esta función sobreescribe los archivos permitidos por defecto de WordPress por nuestra lista, donde podemos añadir los tipos extra que necesitemos (por ejemplo archivos de video .avi, .mpeg, .webm…).
Bloquear tipos de archivo específicos
Si solamente queremos bloquear ciertos tipos de archivos, podemos usar la función:
function eliminar_tipos_de_archivo( $mime_types=array()){
unset( $mime_types['mov|qt'] ); // Vídeos con la extensión .mov
unset( $mime_types['mp4|m4v'] ); // Vídeos con la extensión .mp4
unset( $mime_types['avi'] ); // Vídeos con la extensión .avi
unset( $mime_types['mpeg|mpg|mpe'] ); // Vídeos con la extensión .mpg
return $mime_types;
}
add_filter('upload_mimes','eliminar_tipos_de_archivo');
Añadiendo en cada unset() el tipo de archivo a bloquear.
Una capa extra de seguridad que podemos añadir a nuestros proyectos con una pocas líneas de código.