Général

Les PCRE

Les POSIX

Pratique

Linux

Spécial php

Les billets de fred

Limiter l'accès à un répertoire

Comme nous l'avons vu dans l'article "Include : gouffre ou fêlure ?", il faut parfois empêcher qu'une personne mal intentionnée ne puisse remonter un répertoire pour aller dans un autre normalement inaccessible.

Je viens de créer cette petite fonction pour mes besoins personnels, alors je vous en fait part.

/*
* Retourne "true" si le fichier $filename est dans l'arborescence de $limit
* Si $limit commence par un "/", la recherche se fait à partir de la racine du
* site, sinon la recherche s'effectue à partir du répertoire courant.
*/
function limit_dir($filename, $limit) {
    $real = realpath ($filename);
    if( '/' === $limit{0} ) $dir = realpath($_SERVER['DOCUMENT_ROOT'] . $limit);
    else $dir = realpath( getcwd() . '/' . $limit );
    return 0 === strpos($real, $dir) and is_file( $real );
}

$page = 'frames/' . $_GET['p'] . 'html';
if( limit_dir( $page, '/frames' ) ) require $page;
else die('Vous n\'avez rien à faire ici');
?>

Par Frédéric Bouchery
ADAM Benjamin 2008 | Admin