methode include plus efficace

Petit nouveau ! | 2 Messages

27 févr. 2006, 22:04

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.

Mammouth du PHP | 1311 Messages

27 févr. 2006, 22:20

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

ViPHP
fab
ViPHP | 2657 Messages

28 févr. 2006, 01:26

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
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Petit nouveau ! | 2 Messages

28 févr. 2006, 03:45

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

Mammouth du PHP | 768 Messages

28 févr. 2006, 09:13

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:
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?