IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Besoin d'aide pour la faille de l'include


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2017
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Besoin d'aide pour la faille de l'include
    Bonjour,

    Je suis actuellement en train de créer un petit site en local (qui seras peut etre dans le futur public) sur un serveur apache 2 php 5.6. Je sais que différente faille de sécurité existe et je voulais commencer par régler celle ci.

    Enfaite, je voudrais faire apparaitre ma page de test (avec une balise <h1>Bonjour</h1> dans ce fichier) lorsque l'on clique sur le bouton forum, le problème est que ?page=test.php est bien dans l'url mais il affiche mon texte dans ma barre de navigation.
    Je voudrais tout simplement que la page d'accueil disparaisse et que via l'url (localhost/project/index.php?page=test.php) la page test apparaisse.

    Voici le code que j'ai récupérer en suivant une vidéo sur youtube, pour m'aider a bloqué cette faille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            <?php
            if(!empty($_GET['page']) && $_GET['page']!= ".htaccess" && $_GET['page'] != ".htpasswd") {
              include($_GET['page'].".php");
            } else {
              echo "erreur";
            }
            ?>
            <a class="py-2 d-none d-md-inline-block" href="?page=test">Forum</a>
            <a class="py-2 d-none d-md-inline-block" href="#">Activite</a>
    (Il n'y a pas tout le code de la barre de navigation)

    PS : je suis débutant.

    Voilà, c'est tout pour moi.

    Bonne fin de journée, Mael

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Généralement, on liste TOUTES les pages qu'on autorise à afficher dans un array :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $pages_array = ('page1', 'page2', 'page3', '...');
    Ensuite, il suffit de vérifier que le nom reçu en GET est dans cette liste :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if( !empty($_GET['page']) && in_array($_GET['page'], $pages_array) )
    {
       // OK, on peut afficher...
       include( $_GET['page'] . '.php' );
    } else {
      echo 'ALERTE !!! Intrusion non autorisée !!'; 
      // (ou plus simplement une page d'erreur...)
       include( 'erreur.php' );
    }
    Evidemment, ce bout de code est à mettre à l'ENDROIT où on veut l'afficher !

    Si tu le mets au-dessus des liens de navigation, c'est là qu'il s'affichera...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2017
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Merci de votre réponse, je vais tester ça et je reviens vers vous si c'est résolu ou si j'ai un problème.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2017
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Je viens de l'essayer et j'ai quelque petit problèmes.

    Lorsque je mets plusieurs noms de pages il me dis qu'il y a une virgule inattendu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pages_array = ('forum', 'login');
    Lorsque je mets juste une page, il affiche le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo 'ALERTE !!! Intrusion non autorisée !!';
    et il me dit ceci : Warning: in_array() expects parameter 2 to be array, string given in mon directory on line 28

    Auriez vous une solution ?

    Bonne après midi.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oups, mea culpa.
    J'ai mixé 2 syntaxes...




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pages_array = array('forum', 'login');
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pages_array = ['forum', 'login'];

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2017
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci, je teste ca se soir et je vous en dit plus.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2017
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Je désespère, ça ne fonctionne pas.

    J'ai une erreur php qui me dit que le fichier ou le répertoire n'existe pas, et qu'il ne peut pas ouvrir le fichier login.php

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Il faut vérifier ton arborescence et où se trouvent les fichiers les uns par rapport aux autres. Où se trouve login.php par rapport à index.php : dans le même dossier ? dans des dossiers voisins ?

    Sinon, personnellement, j'aurais poussé un peu plus loin en faisant un tableau de correspondance entre le paramètre de l'url et le vrai nom de la page, ce qui permet de manipuler les scripts (modifier, renommer...) sans modifier les urls (et du coup, les favoris créés par tes utilisateurs continuent à fonctionner)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $pages_array = [
        'login' => 'login.php',
        'user' => 'user.php',
        'page' => 'some_script.php'
    ];
     
    if( !empty($_GET['page']) && isset($pages_array[$_GET['page']]) )
    {
       // OK, on peut afficher...
       include( $pages_array[$_GET['page']] );
    } else {
      echo 'ALERTE !!! Intrusion non autorisée !!'; 
      // (ou plus simplement une page d'erreur...)
       include( 'erreur.php' );
    }

Discussions similaires

  1. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 15h38
  2. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  3. [Kylix] besoin d'aide pour installer kylix3
    Par Sph@x dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2004, 13h53
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo