Page 1 sur 1

methode include plus efficace

Posté : 27 févr. 2006, 22:04
par yaya
bonsoir
désolé si ce sujet se repete à chaque fois j'ai bien parcouru les messages du forums !
j'utilise cette méthode d'inclusion mes fichiers se trouvent dans un dossier include
1er script
<?php
if(isset($_GET['page']) && (file_exists('include/'.$_GET['page'].'.php'))) { include('include/'.$_GET['page'].'.php'); }
elseif(!isset($_GET['page'])) { include('include/accueil.php'); }
else { include('include/dehors.php'); } 
?>
j'ai regardé coté configuration je suis chez free register_globals off

la fonction file_exists permettait jusqu'à la version 4 de parer l'inclusion d'un fichier distant en incluant simplement un contrôle de l'existence du fichier en local mais depuis le version 5 l'inclusion pose un probleme de sécurité puisque file_exists permet d'inclure un fichier par le biais des prtoclole http:// ftp://

source:http://www.nexen.net/php/function.file-exists.php
j'ai effectué plusieurs recherche sur le net j'ai trouvé ce script
2eme script
<?php
define("PATH", "./".$_GET['path']."/"); 
 
if(!isset($_GET['page'])) $page='accueil'; else $page=$_GET['page']; 
	include (in_array(PATH . $page . ".inc.php", glob(PATH . "*.inc.php"))) ?  PATH . $page . ".inc.php" :  PATH . "default.inc.php"; 
?>
la méthode de l'article phpdebutant-article68.php est la plus sure mais pour un site qui a plusieurs pages
c'est moins maintenable.
ma question comment rendre le script décrit en haut plus efficace est ce que vous pensez que le 2eme script est plus efficace
contre les attaques xss
l'erreur est l'origine de toute découverte !
merci pour votre aide vos commentaires.

Posté : 27 févr. 2006, 22:20
par jeff
salut
deja tu peut tester la variable qui est passer par l'url avec des fonctions sur les chaines verification de / et \
dans le deuxieme script $_GET['path'] est une mauvaise idée, ca devrai etre rentré dans un fichier de configuration

Posté : 28 févr. 2006, 01:26
par fab
perso j'ai dans un tableau tous les fichiers qui peuvent être inclu si l'utilisateur demande un fichier autre il est alors renvoyé vers la page d'accueil

Posté : 28 févr. 2006, 03:45
par yaya
perso j'ai dans un tableau tous les fichiers qui peuvent être inclu si l'utilisateur demande un fichier autre il est alors renvoyé vers la page d'accueil
oui logiquement cette méthode c'est la plus sure mais pour un bon fonctionement t'arrive à combien de fichier tu dépasse les 200 ...
le serveur il tient il rame
merci de préciser ce point stp
sinon qu'en pense tu de ça ???
http://www.sutekidane.net/blog/pseudo-f ... tique.html
la nuit va être longue en attendant les bonne décisions SOS URGRNT sont les mots bannis quand on demande de l'aide

Posté : 28 févr. 2006, 09:13
par mario
moi je fais de cette facon:
<?php
$tab_pg = array('page1'=>'page1.php','page2'=>'page2.php','page3'=>'page3.php');

if ( (isset($_GET['page'])) && (array_key_exists($_GET['page'], $tab_pg)) ){
   if ( (file_exists($tab_pg[$_GET['page']])) && (is_readable($tab_pg[$_GET['page']])) ){
      include($tab_pg[$_GET['page']]);   
   }
   else
   {
      echo $tab_pg[$_GET['page']]." est introuvable ou innacessible<br/>";
   }
}
?>
je ne laisse jamais le nom du script dans l'URL, même si je pense, ça ne représente pas un grand risque :wink: