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 ]
Mardi 22 janvier 2019 - Semaine 04 - Saint Vincent (Demain: Saint Barnard)
Aujourd'hui, c'est l'anniversaire de Frank Leboeuf (1968-51 ans), footballeur français (défenseur). Autre 22 janvier: 1981 - Début de la série américaine Dallas sur les écrans français (TF1).
Haut de page Easy-Micro