ms-files.php
contient le fragment de code suivant:
$file = rtrim( BLOGUPLOADDIR, '/' ) . '/' . str_replace( '..', '', $_GET[ 'file' ] );
if ( !is_file( $file ) ) {
status_header( 404 );
die( '404 — File not found.' );
}
Ce code détermine si le fichier peut être trouvé ou non. Cependant, il fait quelque chose que je trouve ... Bizarre. Il supprime toutes les doubles périodes ("..") de la chaîne. Normalement, cela n'a pas d'importance, mais des utilisateurs ont téléchargé des fichiers avec deux points consécutifs (soupir), ce qui a induit par erreur une partie de ce code dans le code 404 (non trouvé).
Je suis tenté de supprimer l'étrange nature de ce code qui supprime les doubles règles, mais je crains de casser par inadvertance autre chose. Pourquoi cette fonctionnalité est-elle présente lorsqu’elle est codée?
Merci! :)
Edit: Pour être clair, il semblerait que les doubles points ne sont PAS invalides dans Wordpress, mais ils ne peuvent pas être servis par ce bit de code ... Donc, ils ne sont pas invalides, mais lorsqu'ils sont accédés via ce mécanisme, 404 est incorrectement signalé.
On dirait que c'est un défaut. Ish.
Comme @s_ha_dum mentionné, ceci est destiné à empêcher une attaque de traversée de répertoire. Cependant, la médiathèque de Wordpress vous permettra de télécharger un fichier avec deux périodes consécutives ou plus, même si ms-files.php refusera de le servir.
Donc, rien n'est techniquement "cassé", mais ce n'est certainement pas idéal. Il existe un correctif pour empêcher cela, mais il semble que cela n’ait jamais été ajouté au noyau:
https://core.trac.wordpress.org/attachment/ticket/16189/check%20for%20double%20periods.diff
Plus d'informations sur ce défaut: https://core.trac.wordpress.org/ticket/12756