Securité piratage

annemarie1 Messages postés 85 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je voulais savoir si mon code était sécurisé , j'ai un tableau de 2 colonnes
dans la première colonne j'ai fait des liens en php

<?php
echo '<a href="index2.php?page=cours">COURS</a>';
?>

puis dans la deuxième colonnes j'ai mes includes

<?php
if ($_GET['page'] == "accueil")
{
include("accueil1.html");
}else{
include("accueil1.html");
}

Pourriez vous me dire si celà est suffisant pour la sécurisation
Un grand merci pour votre aide
Anne Marie
Configuration: Windows Vista Internet Explorer 7.0

7 réponses

  1. HACKER 712 Messages postés 1463 Statut Contributeur 255
     
    Bonjour, je mettrais plutôt ca à ta place :
    <?php
    if(isset($_GET['page']) AND file_exists($_GET['page'].'.php'))
    {
    include $_GET['page'].'.php';
    }
    else
    {
    include 'accueil1.html';
    }
    ?>
    
    0
    1. annemarie1 Messages postés 85 Statut Membre
       
      merci pour ta réponse, je l'insere comme ca ? ( je ne suis vraiment pas doué en php )

      <?php
      if(isset($_GET['page']) AND file_exists($_GET['page'].'accueil.php'))
      {
      include $_GET['page'].'accueil.php';
      }
      else
      {
      include 'accueil1.html';
      }
      ?>


      par contre j'ai aussi trouvé ce code très securisé parat il !


      $page=preg_replace("/[^a-z0-9_ ]/i", "", $page);
      if(!@include("includes/$page.php"))die("Cette page n'existe pas sur le serveur, merci d'informer le webmaster du site si ce problème venait à se reproduire.");

      mais le probleme c'est que je n'y comprends rien , pourrez tu me dire s'il te plait où mettre ce code dans mes includes

      merci encore pour ton aide , je fais un site gratos pour un ami .
      0
  2. HACKER 712 Messages postés 1463 Statut Contributeur 255
     
    non,

    if(isset($_GET['page']) AND file_exists($_GET['page'].'.php'))

    $_GET['page'] sera remplacé par la page que tu veux, auquel on ajoute l'extansion .php
    0
    1. annemarie1 Messages postés 85 Statut Membre
       
      alors comme ca ?
      if(isset($_GET['accueil']) AND file_exists($_GET['accueil'].'.php'))
      {
      include $_GET['accueil'].'.php';
      }
      0
  3. HACKER 712 Messages postés 1463 Statut Contributeur 255
     
    NON !

    laisse comme je te l'ai donné, et tu auras une url du type ?page=forums

    page sera interprétée par forums, auquel on ajoutera .php
    0
  4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Pas top ta solution HACKER 712.
    Si une personne met dans l'url page=http://hacker/toto ça risque de faire du dégât ^^.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Voici un petit lien qui te permet de faire des include sécurisés : https://openclassrooms.com/fr/courses

    Cdlt
    0
    1. annemarie1 Messages postés 85 Statut Membre
       
      Bonjour

      j'etais juste dessus, mais comme je suis un peu null en php ca va etre un peu difficile ...par contre pour le code que j'ai trouvé

      $page=preg_replace("/[^a-z0-9_ ]/i", "", $page);
      if(!@include("includes/$page.php"))die("Cette page n'existe pas sur le serveur, merci d'informer le webmaster du site si ce problème venait à se reproduire.");


      ce code est t'il valable ? comment puis je l'inserer dans l' exemple du site du zero :

      <?php

      $page = (!empty($_GET['page'])) ? htmlentities($_GET['page']) : 'index';

      $array_pages = array(
      'index' => 'index.php',
      'page1' => 'page1.php',
      'page2' => 'page2.html'
      );

      if(!array_key_exists($page, $array_pages)) include('index.php');

      elseif(!is_file($array_pages[$page])) include('erreur.php');

      else include($array_pages[$page]);

      ?>
      un grand merci pour l'aide que vous m'apporter
      0
      1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > annemarie1 Messages postés 85 Statut Membre
         
        $page=preg_replace("/[^a-z0-9_ ]/i", "", $page);
        Cela permet de vérifier qu'il n'y a que des caractères alphanumériques. Donc grâce à ça, une page ne pourra pas venir d'un site extérieur. Mais cela n'est pas top pour autant car si une personne arrive à uploader une page sur ton serveur (faille upload par exemple) il pourra l'exécuter.

        Le mieux est vraiment de recenser dans un tableau le nom des pages et de vérifier que le GET['page'] appartient à ce tableau comme sur le site susmentionné.

        Cdlt
        0
  7. HACKER 712 Messages postés 1463 Statut Contributeur 255
     
    Si elle n'existe pas, il y a l'acceuil !

    cf file_exists
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Oui, mais comme dit plus haut, une personne peut très bien mettre une page sur un autre site comme le sien. Le fichier existera alors et la condition passera provoquant une grosse faille de sécurité.
      0
      1. annemarie1 Messages postés 85 Statut Membre > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
         
        merci pour ta réponse

        puis je faire ca donc ?

        <?php

        $page = (!empty($_GET['page'])) ? htmlentities($_GET['page']) : 'index';

        $array_pages = array(
        'cours' => 'cours.html',
        'ateliers' => 'ateliers.html',
        'festivite' => 'festivite.html'
        'stages' => 'stages.html',
        'concerts' => 'concerts.html',

        );

        if(!array_key_exists($page, $array_pages)) include('index.php');

        elseif(!is_file($array_pages[$page])) include('erreur.php');

        else include($array_pages[$page]);

        ?>

        Merci encore
        0
      2. annemarie1 Messages postés 85 Statut Membre > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
         
        bon et bien j'ai fait comme ca ? est suffisant contre le piratage pour les includes

        <?php

        $page = (!empty($_GET['page'])) ? htmlentities($_GET['page']) : 'accueil';

        $array_pages = array(
        'accueil' => 'accueil.html',
        'ateliers' => 'ateliers.html',
        'cours' => 'cours.html',
        'festivite' => 'festivite.html'
        );

        if(!array_key_exists($page, $array_pages)) include('accueil.php');

        elseif(!is_file($array_pages[$page])) include('erreur.php');

        else include($array_pages[$page]);

        ?>
        merci pour ton aide précieuse
        0
  8. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,
    J'aurais rajouté à la place de !empty($_GET['page']) : isset($_GET['page']) qui est plus prévu pour tester si la variable est définie ou pas. Si la variable est définie est vide, elle sera prise en compte dans la condition sur le tableau.
    Cependant, à part ce petit point discutable, le reste me paraît acceptable d'un point de vue sécurité.

    Cdlt,
    0