Easy-Micro


LANGAGE Langage PHP
Sécurité

Gestion de la sécurité dans les templates

Gestion de la sécurité
Pour éviter une saisie directe dans la barre d'adresse d'un fichier malveillant, on crée une liste de pages autorisées.
<?php
// création d'un tableau associatif qui liste les pages autorisées :
$pages_autorisees = array('Accueil' =>'accueil.php','Page1' => 'page1.php','Page2' => 'page2.php');
?>

<html><head></head>
<body>
Menu:<br />
<a href="index.php?page=Accueil">Accueil</a><br />
<a href="index.php?page=Page1">Page 1</a><br />
<a href="index.php?page=Page2">Page 2</a><br /><br />

<?php
// test si la variable 'page' est définit ET si elle est dans le tableau '$pages_autorisees'
if ( (isset($_GET['page'])) && (in_array($_GET['page'],$pages_autorisees)) ) {
require_once($pages_autorisees[$_GET['page']]);
} else {
require_once('accueil.php');
}
?>
</body></html>

Mais le problème est qu'il faut remplir "à la main" le tableau des noms de pages autorisées. Voici une solution pour un remplissage dynamique :

Remplissage dynamique de la matrice "$pages_autorisees"
<?php
$dossier = opendir("."); // Ouvrir le dossier courant
$i = 0;
while($fichier = readdir($dossier)) { // Tant que l'on peut lire des noms de fichiers
if ($fichier != ".." && $fichier != "") { // si les noms ne sont pas ".." et vide
$pages_autorisees[$i] = $fichier; // On stocke dans la matrice
$i++;
}
}
closedir($dossier); // On ferme le dossier
?>

<html><head></head>
... le reste du code visible dans l'exemple ci-dessus.


Exemple complet (remplissage dynamique et affichage dynamique du menu)

<?php
// on récupère le nom de la page
if (isset($_GET['page'])) { $page = $_GET['page']; } else { $page = 'accueil.php'; }

// remplissage dynamique des pages autorisées
$dossier = opendir("rep"); // on ouvre le dossier "rep"
$i = 0;
while($fichier = readdir($dossier)) { // tant que l'on peut lire des noms de fichiers
if ($fichier != "." && $fichier != ".." && $fichier != "") { // et si les noms ne sont pas ".." et vide
$pages_autorisees[$i] = $fichier; // on les stockes dans la matrice
$i++;
}
}
closedir($dossier); // on ferme le dossier
?>

<html>
<head></head>
<body>
<h3>Menu dynamique:<br />|
<?php
for($i = 0; $i < count($pages_autorisees); $i++) {
$pages_menu = substr($pages_autorisees[$i],0,-4); // pour enlever le ".php" à l'écran
echo '<a href="index.php?page='.$pages_autorisees[$i].'">'.ucfirst($pages_menu).'</a> | ';
}
?></h3>

<h2>
<?php
if (file_exists("rep/".$page) && in_array($page,$pages_autorisees)) {
require_once("rep/".$page); } else { require_once('rep/accueil.php'); }
?></h2>

</body>
</html>


Vous pouvez aussi utiliser la variable prédéfinit $_GET[] pour réaliser une gestion dynamique de variables.


Suivez les aventures des skippers aquitains sur EasyVoile.com
Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]
Lundi 25 mars 2019 - Semaine 13 - Saint Humbert (Demain: Sainte Larissa)
Aujourd'hui, c'est l'anniversaire de Marcia Cross (1962-57 ans), comédienne américaine (rôle de Bree Van de Kamp dans Desperate Housewives). Autre 25 mars: 1918 : décès à Paris du compositeur français Claude Debussy. 1984 : Alain Prost gagne le grand prix de Formule 1 du Brésil.
Haut de page Easy-Micro