Comment fixé une faille include local ?

Résolu
MonkeyBlue -  
h1fra Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, voici mon code:
<?php
			if(isset($_GET['p']))
			{
				$aInclure = htmlentities ($_GET['p']);
			
				if(file_exists('st/'.$aInclure.'.php'))
					include('st/'.$aInclure.'.php');	
				else
					include('accueil.php');	
			}
			else include('accueil.php');
		?>

le problème c'est que j'ai réussi a remonté dans mon serveur
p=../../../../../../../../boot.ini%00
j'ai cherché sur internet mais je comprend pas comment supprimé cette vulnérabilité
et ce que quelqu'un qui si connais en faille pourrais me corrigé mon code et m'expliqué ?
A voir également:

2 réponses

h1fra Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   1
 
Personellement j'utilise une petite fonction pour nettoyer mes variables $_GET :

function CleanVar($var){
    $var = trim($var);
    $RemoveChars  = array( "([\40])" , "([^a-zA-Z0-9-])", "(-{2,})" );
    $ReplaceWith = array("-", "", "-");
    return preg_replace($RemoveChars, $ReplaceWith, $var);
}

$page      	= CleanFileName($_GET['p']);


Elle enlève tout ce qui n'est pas lettre et chiffre, donc plus de problème de ce genre !
1
MonkeyBlue
 
Oua merci beaucoup h1fra
0
h1fra Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   1
 
Ca m'a un peu intrigué cette histoire, et en faisant une petite recherche il s'agirait d'une faille relativement connut et donc le seul moyen de contrer ça, c'est d'utiliser ce type de solution!

Au moins j'aurai appris quelque chose aussi XD

ps: oublie pas de noter ça comme résolut ;)
0