Securisation page membre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Securisation page membre

Re: Securisation page membre

par moogli » 09 avr. 2011, 23:34

met le session_start() avant tes deux include et seulement la !

@romantica c'est incompréhensible tes 3 messages !

@+

Re: Securisation page membre

par prohand » 09 avr. 2011, 21:53

Ok merci j'y ai modifié mais sa change quoi ?

Merci

Re: Securisation page membre

par romantica » 09 avr. 2011, 21:43

bonsoir,juste pour te dire que
<?php
session_start();
    if(isset($_POST['tbx_login'])==true) // On verifie que le champ a bien été posté, si oui on continue
    {
                $login=$_POST['tbx_login']; // Recuperation du login entré dans le champ ( On le met dans une variable )
                $pass=$_POST['tbx_pass'];  // Pareil que le login
est faux car session_start doit etre avant tout code html,exemple
<?php
session_start();
?>

<?php
    if(isset($_POST['tbx_login'])==true) // On verifie que le champ a bien été posté, si oui on continue
    {
                $login=$_POST['tbx_login']; // Recuperation du login entré dans le champ ( On le met dans une variable )
                $pass=$_POST['tbx_pass'];  // Pareil que le login
cordialement

Re: Securisation page membre

par prohand » 09 avr. 2011, 21:42

J'y ai modifier comme sa entre temps :
<?php
    if(isset($_POST['tbx_login'])==true) // On verifie que le champ a bien été posté, si oui on continue
    {
		$login=$_POST['tbx_login']; // Recuperation du login entré dans le champ ( On le met dans une variable )
		$pass=$_POST['tbx_pass'];  // Pareil que le login
	
		if(VerifLogin($login,$pass)==true) // On regarde dans la fonction si elle nous retourne true
		{
		    session_start();
			$_SESSION['LoginOK']=$login;			// Si la fonction retourne true alors on autorise le login et on redirige sur la page membre
			header("Location:membres.php?Login=".$login.""); 		
		}
		else
		{
			$_SESSION['LoginOK']=0; // Sinon on refuse le login.
			
		}
		
		

    }
?>
<html>
<form action="login.php" method="post">
<center><img src="images/login.png"></center>
<center><TABLE BORDER="1"><tr><th><center>Login : </center><input type="text" name="tbx_login" value="<?php if(isset($_POST["tbx_login"])){echo $_POST['tbx_login'];}?>" /></th></tr><br />
    <tr><th><center>Mot De Passe : </center><input type="password" name="tbx_pass" value="" /></th></tr><br />
    <tr><th><input type="submit" value="envoyer"></tr></th>
</form><center></TABLE> </center>
</html>
<?php
function VerifLogin($login,$pass)
{
        include('config.php');
		$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
		$sql=$connexion->query("SELECT login,pwd FROM membres"); // on va chercher tous les membres de la table qu'on trie par ordre croissant
		$sql->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet
		while( $data = $sql->fetch() ) 
	
        {
           if($data->login==$login) // On recupere le login et on le met dans la variable Login
           {
             if($data->pwd==$pass) // On recupere pwd et on le met dans la variable pass
              {
               $sql->closeCursor(); // On libère la connexion du serveur, permettant ainsi à d'autres requêtes SQL d'être exécutées
		       return true;
		      }
			  else
			  {
			   echo("Le mot de passe n'est pas correct");
			  }
		   }
		    else
		   {
		    echo("Le nom d'utilisateur n'est pas correct");
		   }
				
		}
	
		$sql->closeCursor(); // On libère la connexion du serveur, permettant ainsi à d'autres requêtes SQL d'être exécutées
		return false;
}

?>

Re: Securisation page membre

par romantica » 09 avr. 2011, 21:42

bonsoir,juste pour te dire que
<?php
session_start();
    if(isset($_POST['tbx_login'])==true) // On verifie que le champ a bien été posté, si oui on continue
    {
                $login=$_POST['tbx_login']; // Recuperation du login entré dans le champ ( On le met dans une variable )
                $pass=$_POST['tbx_pass'];  // Pareil que le login
est faux car session_start doit etre avant tout code html,exemple
[color=#0000FF]<?php
session_start();
?>[/color]

<?php
    if(isset($_POST['tbx_login'])==true) // On verifie que le champ a bien été posté, si oui on continue
    {
                $login=$_POST['tbx_login']; // Recuperation du login entré dans le champ ( On le met dans une variable )
                $pass=$_POST['tbx_pass'];  // Pareil que le login
cordialement

Re: Securisation page membre

par romantica » 09 avr. 2011, 21:39

bonsoir,juste pour te dire que
<?php
session_start();
    if(isset($_POST['tbx_login'])==true) // On verifie que le champ a bien été posté, si oui on continue
    {
                $login=$_POST['tbx_login']; // Recuperation du login entré dans le champ ( On le met dans une variable )
                $pass=$_POST['tbx_pass'];  // Pareil que le login
est faux car session_start doit etre avant tout code html,exemple
[b]<?php
session_start();
?[/b]>
<?php
    if(isset($_POST['tbx_login'])==true) // On verifie que le champ a bien été posté, si oui on continue
    {
                $login=$_POST['tbx_login']; // Recuperation du login entré dans le champ ( On le met dans une variable )
                $pass=$_POST['tbx_pass'];  // Pareil que le login
cordialement

Re: Securisation page membre

par prohand » 09 avr. 2011, 20:04

J'ai trouvé.

En indiquant sur ma page une condition voici la page membre pour ceux qui veulent :
<?php
include('config.php');
include('verif.php');
?>
<html>
<head>
<title>Page Membres</title>
</head> 
<?php
$LoginOK = $_SESSION['LoginOK'];
 //récupération de l'identifiant de la personne:
$Login  = $_GET["Login"] ;
if($LoginOK==$Login)
{
$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
$sql=$connexion->query("SELECT * FROM membres WHERE Login = '$Login' ");// on va chercher tous les membres
$sql->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet

if( $result = $sql->fetch() ) // on récupère la liste des membres

       echo(
           "<div align=\"center\">"
           
           ." <a href=\"modifmembres.php?Login=".$result->login."\">modifier</a></div>\n"
       ) ;


?>
    
   
   <table border="0" align="center" cellspacing="2" cellpadding="2">
   <tr align="center">
 <td>Login : </td>
<td><?php  echo($result->login) ;?></td>
</tr>
<tr align="center">
<td>Mot De passe : </td>
<td><?php echo($result->pwd) ; ?></td>
</tr>
<tr align="center">
<td>Date D'entree : </td>
<td><?php echo($result->dateentree) ; ?></td>
</tr>
<tr align="center">
<td>Sexe : </td>
<td><?php echo($result->sexe) ; ?></td>
</tr>
<tr align="center">
<td>Ville : </td>
<td><?php echo($result->ville) ; ?></td>
</tr>
<tr align="center">
<td>Code Postal : </td>
<td><?php echo($result->codepostal) ; ?></td>
</tr>
<tr align="center">
<td>Mail : </td>
<td><?php echo($result->mail) ; ?></td>
</tr>
<tr align="center">
<td>Age : </td>
<td><?php echo($result->age) ; ?></td>
</html>
<?php
}
else
{
echo "<html><center>Tentative de hack bloqué accès non autorisé ! </center></html>";
}
?>

Re: Securisation page membre

par moogli » 09 avr. 2011, 18:26

manque le session_start(); ...

le plus simple c'est que tu reprenne ton script ligne a ligne afin que tu comprenne ce qu'il fait ;)

tu peut relire les tutos sur les espaces membres ;)

@+

Re: Securisation page membre

par prohand » 09 avr. 2011, 18:16

Jai essayé sa :

Page login :
<?php
session_start();
    if(isset($_POST['tbx_login'])==true) // On verifie que le champ a bien été posté, si oui on continue
    {
		$login=$_POST['tbx_login']; // Recuperation du login entré dans le champ ( On le met dans une variable )
		$pass=$_POST['tbx_pass'];  // Pareil que le login
	
		if(VerifLogin($login,$pass)==true) // On regarde dans la fonction si elle nous retourne true
		{
			$_SESSION['LoginOK']=$login;			// Si la fonction retourne true alors on autorise le login et on redirige sur la page membre
			header("Location:membres.php?Login=".$login.""); 		
		}
		else
		{
			$_SESSION['LoginOK']=0; // Sinon on refuse le login.
			
		}
		
		

    }
?>
<html>
<form action="login.php" method="post">
<center><img src="images/login.png"></center>
<center><TABLE BORDER="1"><tr><th><center>Login : </center><input type="text" name="tbx_login" value="<?php if(isset($_POST["tbx_login"])){echo $_POST['tbx_login'];}?>" /></th></tr><br />
    <tr><th><center>Mot De Passe : </center><input type="password" name="tbx_pass" value="" /></th></tr><br />
    <tr><th><input type="submit" value="envoyer"></tr></th>
</form><center></TABLE> </center>
</html>
<?php
function VerifLogin($login,$pass)
{
        include('config.php');
		$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
		$sql=$connexion->query("SELECT login,pwd FROM membres"); // on va chercher tous les membres de la table qu'on trie par ordre croissant
		$sql->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet
		while( $data = $sql->fetch() ) 
	
        {
           if($data->login==$login) // On recupere le login et on le met dans la variable Login
           {
             if($data->pwd==$pass) // On recupere pwd et on le met dans la variable pass
              {
               $sql->closeCursor(); // On libère la connexion du serveur, permettant ainsi à d'autres requêtes SQL d'être exécutées
		       return true;
		      }
			  else
			  {
			   echo("Le mot de passe n'est pas correct");
			  }
		   }
		    else
		   {
		    echo("Le nom d'utilisateur n'est pas correct");
		   }
				
		}
	
		$sql->closeCursor(); // On libère la connexion du serveur, permettant ainsi à d'autres requêtes SQL d'être exécutées
		return false;
}

?>
La pge membres est la même qu'avant

Le la page verif :
<?php

if(!isset($_SESSION['LoginOK'])) {
  echo '<center>Vous n\'êtes pas autorisé à acceder à cette zone</center>';
  include('login.php');
  exit;
}
?> 
Mai il me dit toujours que je n'est pas accès.

Re: Securisation page membre

par prohand » 09 avr. 2011, 17:38

Je suis vraiment perdu :(

Re: Securisation page membre

par moogli » 09 avr. 2011, 17:05

mwé,

a tu compris le code que tu a fait (copier ?).

La base c'est de pouvoir différencier la personne connectée des autres, pour cela on utilise soit le pseudo (qu'en général on considère comme unique) soit la clef primaire de la table gérant les utilisateurs.
Il te faut donc
- soit ajouter une variable de session contenant le pseudo ou la clef primaire
- soit modifier le code actuel pour que la variable de session contienne pseudo ou clef primaire ;)


@+

Re: Securisation page membre

par prohand » 09 avr. 2011, 16:57

Sa a fonctionné mais maitnenant j'ai beau changé le pseudo dans l'url est j'ai accès à tous les pseudos.
Je voudrais que même si on change le login dans l'url on ai pas accès à different login que celui avec lequel on c'est loggué.

Re: Securisation page membre

par moogli » 09 avr. 2011, 16:46

salut,

ton problème est simple tu créer $_SESSION['LoginOK'] dans login.php et tu test si $_SESSION['login'] existe dans vérif.php ce qui explique le message d'erreur ....

@+

Re: Securisation page membre

par prohand » 09 avr. 2011, 16:19

Sa ne fonctionne pas :

membres.php
<?php
include('config.php');
include('verif.php');
session_start();
?>
<html>
<head>
<title>Page Membres</title>
</head> 
<?php
 //récupération de l'identifiant de la personne:
$Login  = $_GET["Login"] ;
$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
$sql=$connexion->query("SELECT * FROM membres WHERE Login = '$Login' ");// on va chercher tous les membres
$sql->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet

if( $result = $sql->fetch() ) // on récupère la liste des membres

       echo(
           "<div align=\"center\">"
           
           ." <a href=\"modifmembres.php?id=".$result->id."\">modifier</a></div>\n"
       ) ;
   
?>
    
   
   <table border="0" align="center" cellspacing="2" cellpadding="2">
   <tr align="center">
 <td>Login : </td>
<td><?php echo($result->login);?></td>
</tr>
<tr align="center">
<td>Mot De passe : </td>
<td><?php echo($result->pwd) ; ?></td>
</tr>
<tr align="center">
<td>Date D'entree : </td>
<td><?php echo($result->dateentree) ; ?></td>
</tr>
<tr align="center">
<td>Sexe : </td>
<td><?php echo($result->sexe) ; ?></td>
</tr>
<tr align="center">
<td>Ville : </td>
<td><?php echo($result->ville) ; ?></td>
</tr>
<tr align="center">
<td>Code Postal : </td>
<td><?php echo($result->codepostal) ; ?></td>
</tr>
<tr align="center">
<td>Mail : </td>
<td><?php echo($result->mail) ; ?></td>
</tr>
<tr align="center">
<td>Age : </td>
<td><?php echo($result->age) ; ?></td>
</html>
login.php :

<?php
session_start();
    if(isset($_POST['tbx_login'])==true) // On verifie que le champ a bien été posté, si oui on continue
    {
		$login=$_POST['tbx_login']; // Recuperation du login entré dans le champ ( On le met dans une variable )
		$pass=$_POST['tbx_pass'];  // Pareil que le login
	
		if(VerifLogin($login,$pass)==true) // On regarde dans la fonction si elle nous retourne true
		{
			$_SESSION['LoginOK']=1; // Si la fonction retourne true alors on autorise le login et on redirige sur la page membre
            header("Location:membres.php?Login=".$login.""); 		
		}
		else
		{
			$_SESSION['LoginOK']=0; // Sinon on refuse le login.
			
		}
		
		

    }
?>
<html>
<form action="login.php" method="post">
<center><img src="images/login.png"></center>
<center><TABLE BORDER="1"><tr><th><center>Login : </center><input type="text" name="tbx_login" value="<?php if(isset($_POST["tbx_login"])){echo $_POST['tbx_login'];}?>" /></th></tr><br />
    <tr><th><center>Mot De Passe : </center><input type="password" name="tbx_pass" value="" /></th></tr><br />
    <tr><th><input type="submit" value="envoyer"></tr></th>
</form><center></TABLE> </center>
</html>
<?php
function VerifLogin($login,$pass)
{
        include('config.php');
		$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
		$sql=$connexion->query("SELECT login,pwd FROM membres"); // on va chercher tous les membres de la table qu'on trie par ordre croissant
		$sql->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet
		while( $data = $sql->fetch() ) 
	
        {
           if($data->login==$login) // On recupere le login et on le met dans la variable Login
           {
             if($data->pwd==$pass) // On recupere pwd et on le met dans la variable pass
              {
               $sql->closeCursor(); // On libère la connexion du serveur, permettant ainsi à d'autres requêtes SQL d'être exécutées
		       return true;
		      }
			  else
			  {
			   echo("Le mot de passe n'est pas correct");
			  }
		   }
		    else
		   {
		    echo("Le nom d'utilisateur n'est pas correct");
		   }
				
		}
	
		$sql->closeCursor(); // On libère la connexion du serveur, permettant ainsi à d'autres requêtes SQL d'être exécutées
		return false;
}

?>

Merci de votre aide.

Re: Securisation page membre

par prohand » 09 avr. 2011, 14:46

Ok ilaut juste que je mette une balise html apres la session start sur les deux pages ?
Je testerai ce soir :)