¿Por qué los puntos dobles ("..") no son válidos en un nombre de archivo de imagen de Wordpress?

4

ms-files.php contiene el siguiente fragmento de código:

$file = rtrim( BLOGUPLOADDIR, '/' ) . '/' . str_replace( '..', '', $_GET[ 'file' ] );
if ( !is_file( $file ) ) {
    status_header( 404 );
    die( '404 — File not found.' );
}

Este código determina si el archivo se puede encontrar o no. Sin embargo, hace algo que me parece ... extraño. Elimina todos los puntos dobles ("..") de la cadena. Normalmente, esto no importa, pero hemos tenido usuarios que han subido archivos con dos períodos seguidos (suspiro), lo que hace que esta parte del código informe incorrectamente el código 404 (no se encuentra).

Estoy tentado a eliminar la extraña naturaleza de este código que elimina el doble período, pero me temo que, por error, romperé algo más. ¿Por qué está presente esta funcionalidad como está codificada?

Gracias! :)

Editar: para ser claros, parece que los puntos dobles NO son inválidos en Wordpress, pero no pueden ser atendidos por este bit de código ... Entonces, no son inválidos, pero cuando se accede a través de este mecanismo, 404 se reporta incorrectamente.

    
pregunta rinogo 23.01.2014 - 02:08

1 respuesta

4

Parece que esto es un defecto. Ish.

Como se mencionó en @s_ha_dum, esto es para prevenir un ataque transversal de directorio. Sin embargo, Wordpress 'Media Library le permitirá cargar un archivo con dos o más períodos seguidos, incluso si ms-files.php se negará a servirlo.

Entonces, nada está técnicamente "roto", pero esto ciertamente no es lo ideal. Hay un parche para evitar esto, pero parece que nunca se agregó al núcleo:

enlace

Más información sobre este defecto: enlace

    
respondido por el rinogo 23.01.2014 - 02:18

Lea otras preguntas en las etiquetas