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 :

[Sécurité] Problème de sécurité


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Par défaut [Sécurité] Problème de sécurité
    Bonjour j'ai crée un espace membre (php avec base mysql).

    Quand la personne rempli son formulaire, elle accède à ces informations (page afficher.php).

    Cette personne peut modifier ces informations (page modifier.php).

    Le probleme, je peux passer une adresse par l'url pour tous les personnes inscrites:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://www.monsite/afficher.php?id=1
    En tapant cette adresse et en changeant l'id j'ai accès à toutes les pages .

    Pourtant j'ai mis ca en haut de ma page afficher.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?
    session_start();
     
    if(!isset($_SESSION['login'])) {
      include('login.htm');
      exit;
    }
    ?>
    Mais cela ne marche pas

    Merci de votre aide

  2. #2
    Membre éprouvé Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    ce n'est pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include( "login.htm" );
    mais :

  3. #3
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Citation Envoyé par galak63
    ce n'est pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include( "login.htm" );
    mais :
    Non plus, non...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Location: login.htm");

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Par défaut
    Merci mais cela ne change rien, je peux toujours accèder a toutes les pages en changeant l'id de l'url.

    Je me permet de montrer mes pages.

    Page verif.php : verifier le formulaire et affiche une partie des infos de l'utilisateur

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    <?php 
    session_start();
     
    $base = mysql_connect '', '', '');
    mysql_select_db ('', $);  ?>
     
     
    <table width="500"><tr><td class="titre_infos">Espace Membre</td></tr>
    <tr><td><a  href="http://www.annuaire-les-vacances.com/membre/logout.php">Déconnexion </a></td></tr></table>
    <?php
     
     
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
      extract($_POST);
     
      $sql = "select pwd from tbl_user where login='".$login."'";
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
      $data = mysql_fetch_assoc($req);
     
      if($data['pwd'] != $pass) {
        echo '<table align=center><tr><td width=500 class=descriptif_infos>Mauvais login / password. Merci de recommencer</td></tr></table>';
        header('login.htm'); 
        exit;
      }
      else {
     
        $_SESSION['login'] = $login;
     
        echo '';
     
      }   
    }
    else {
      echo '<table width=500 align=center><tr><td width=650 class=descriptif_infos>Vous avez oublié de remplir un champ.</td></tr></table>';
       header('login.htm'); 
       exit;
    }
     
     
    $sql = "SELECT * FROM gites, tbl_user WHERE gites.mailProprio=tbl_user.login AND tbl_user.login='".$_SESSION['login']."'";
     
        $requete = mysql_query( $sql, $cnx ) ;
       $id  = $_GET["id"] ;
     
        while( $result = mysql_fetch_object( $requete ) )
     
        {
           echo("<table width=500><tr><td width=450 class=descriptif_infos>
    	   <b>".$result->nomGite."</b><br>".$result->regionGite."<br>".$result->dptGite."<br></td><td>&nbsp;</td><td class=descriptif_infos> 
    	   <a href=\"#\" onClick=\"javascript:twNeowin('afficher.php?id=".$result->id."','monPopUp',600,400);\">modifier</a></td></tr><tr><td>&nbsp;</td></tr>\n") ;
     
        }
     
      ?>
    Page afficher.php, la personne peut modifier ses infos

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    <?
    session_start();
     
    if(!isset($_SESSION['login'])) {
     
     echo '<table><tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
      echo '<tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
      echo '<tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
      echo '<tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
      echo '<tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
       echo '<tr><td align=center width=650 class=texte_formulaire>Vous n\'êtes pas autorisé à acceder à cette zone</td></tr>';
         echo '<tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
      echo '<tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
      echo '<tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
      echo '<tr><td width=650 class=texte_formulaire>&nbsp;</td></tr></table>';
      header('login.htm');
      exit;
    }
     
     
        $cnx = mysql_connect ('', '', '');
     
        $db = mysql_select_db( '' ) ;
     
      $id  = $_GET["id"] ;
     
      /
    $sql = "SELECT * FROM gites   WHERE id = ".$id ;
     
     
      $requete = mysql_query( $sql, $cnx ) or die( mysql_error());
     
     
      if( $result = mysql_fetch_object( $requete ) )
      {
     
      ?>  
     
     
      <form name="insertion" action="modifier.php" method="POST">
      <input type="hidden" name="id" value="<?php echo($id) ;?>">
     <div class="membre">
     <table  border="0" align="center" cellspacing="2" cellpadding="2">
      <tr><td width="400" class="titre_infos">Modifier votre annonce</td></tr></table>
     
      <table  border="0" align="center" cellspacing="2" cellpadding="2">
          <tr align="center">
          <td class="descriptif_infos"><div align="left">Titre</div></td>
          <td ><textarea name="nomGite" cols="80"><?php echo($result->nomGite) ;?></textarea></td>
        </tr>
        <tr align="center">
          <td  class="descriptif_infos"><div align="left">Description</div></td>
          <td ><textarea name="descriptionGite" cols="80"><?php echo($result->descriptionGite) ;?></textarea></td>
        </tr>
        <tr align="center">
    	<tr>
    	  <td  class="descriptif_infos">R&eacute;gion</td>
     
          <td class="descriptif_infos">
         <?php
    echo "<select name=\"regionGite\">";
    $opt = ($result->regionGite == 'Alsace')?(' selected="selected"'):('');         
    echo "<option value=\"Alsace\"$opt>Alsace</option>";
     
    $opt = ($result->regionGite == 'Aquitaine')?(' selected="selected"'):('');
    echo "<option value=\"Aquitaine\"$opt>Aquitaine</option>";
     
     
    $opt = ($result->regionGite == 'Poitou-Charentes')?(' selected="selected"'):('');
    echo "<option value=\"Poitou-Charentes\"$opt>Poitou-Charentes </option>";
     
    $opt = ($result->regionGite == 'Rhône-Alpes')?(' selected="selected"'):('');
    echo "<option value=\"Rhône-Alpes\"$opt>Rhône-Alpes</option>";
     
     
    echo "</select>";
     
    ?>
     
     
     
          <td class="descriptif_infos" colspan="2"><input type="submit" value="modifier"></td>
        </tr>
    Et pour finit, pour valider les modifications, ca envoi vers la page modifier.php

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    <?
    session_start(); ?
     
    if(!isset($_SESSION['login'])) {
     
      echo '<table><tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
      echo '<tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
      echo '<tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
      echo '<tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
      echo '<tr><td width=650 class=texte_formulaire>&nbsp;</td></tr>';
       echo '<tr><td align=center width=650 class=texte_formulaire>Vous n\'êtes pas autorisé à acceder à cette zone</td></tr></table>';
      header('login.htm');
      exit;
    }
    ?>   
     
     
        $cnx = mysql_connect ('', '', '');
     
        $db = mysql_select_db( '' ) ;
     
     
      $nomGite     = $_POST["nomGite"] ;
      $descriptionGite = $_POST["descriptionGite"] ;
      $regionGite = $_POST["regionGite"] ;
      $dptGite        = $_POST["dptGite"] ;
      $typeGite        = $_POST["typeGite"] ;
      $multiTv        = $_POST["multiTv"] ;
      $capaciteGite        = $_POST["capaciteGite"] ;
        $nomProprio        = $_POST["nomProprio"] ;
       $id         = $_POST["id"] ;
     
     
      $sql = "UPDATE gites
              SET nomGite        = '$nomGite', 
    	      descriptionGite     = '$descriptionGite',
    		  regionGite    = '$regionGite',
    		  typeGite           = '$typeGite',
    		  multiTv			= '$multiTv',
    		  capaciteGite           = '$capaciteGite',
    		  nomProprio           = '$nomProprio',
     
              WHERE id = '$id' " ;
     
     
      $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
     
     
      if($requete)
      {
        echo("<br><br><br><table width=630><tr><td align=center class=descriptif_infos>La modification a été correctement effectuée</td></tr></table>") ;
     
      }
      else
      {
        echo("<br><br><br><table><tr><td class=descriptif_infos>La modification a echouée</td></tr></table>") ;
     
      }
    ?>
    Ca fais pas mal de teps que je consulte tous les forums, les tuto et je n'ai jamais su regler ce probleme.

    Merci d'avance pour votre aide

  5. #5
    Invité
    Invité(e)
    Par défaut
    preferes <?php à <? (obsolete)
    tu as un saut de ligne avt ton session start à supprimer mais tu aurais du avoir l'erreur de header deja envoyé;

    met ton error reporting à 0 pour voir ttes les erreurs : error_reporting(0);
    ça nous permettra de mieux t'aider

  6. #6
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Citation Envoyé par pod1978
    Merci mais cela ne change rien, je peux toujours accèder a toutes les pages en changeant l'id de l'url.
    Bonjour
    Je ne vois pas le rapport entre :
    1. Le paramètre id dans l'URL
    2. Le fait que tu rediriges vers une autre page si une certaine variable de session n'est pas positionnée.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Par défaut
    Exusez moi mais je ne comprend pas tres bien ce que tu veux dire Eusebius.


    Je reformule ma question

    Lorsque je remlis le formulaire, je peux consulter mes infos mais le probleme c'est que si je ne ferme pasmon explorateur et que j'ouvre un nouvel onglet si je copie l'url suivante:
    http://monsite.fr/afficher.php?id=1235, j'ai accès aux infos d'autres membres.

    Et le fais de rajouter ce code en haut de mes pages , je croyais que ca aller me regler ce probleme de sécurité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?
    session_start();
     
    if(!isset($_SESSION['login'])) {
    header("Location: login.htm");
      exit;
    }
    ?>

    Mais ce n'est pas le cas

  8. #8
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    OK je vois, du moment que tu es connecté, tu peux accéder aux données d'un autre compte.

    Pour contrer ça, il faut qu'au lieu de vérifier si $_SESSION['login'] est simplement présente, vérifier sa valeur pour savoir si le visiteur a le droit d'accéder à la page (si tu as un id par compte, tu peux mettre cet id dans une variable de session à l'authentification, par exemple)

Discussions similaires

  1. [Sécurité] problème de sécurité
    Par starr dans le forum Langage
    Réponses: 8
    Dernier message: 02/06/2007, 22h52
  2. [Sécurité] Problème de sécurité !
    Par sirbaldur dans le forum Langage
    Réponses: 2
    Dernier message: 22/05/2006, 12h05
  3. [Sécurité] Problème de sécurité avec l'upload
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 14/04/2006, 10h54
  4. [Sécurité] Problème de sécurité
    Par donid dans le forum Langage
    Réponses: 4
    Dernier message: 02/03/2006, 10h07
  5. [Debutant] Problème de sécurité dans un applet
    Par peaceinpal dans le forum Applets
    Réponses: 3
    Dernier message: 09/09/2004, 20h56

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