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é] Espace membre et page administration


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut [Sécurité] Espace membre et page administration
    Bonjour,
    je débute dans le php.
    Pour mon site j'ai créé une page membre. Je voudrais savoir si elle est sécurisé ou je risque de me faire attaquer mon site.
    Merci d'avance.

    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
     
    <?php
    session_start(); 
     
    //--regarde si cookie ou session existe et créé les variable correspondante-//
    //////////////////////////////////////////////////////////////////////////////
    if(isset($_COOKIE['pseudo']))												//
    {																			//
    $recuperation_pseudo=$_COOKIE['pseudo'];									//
    $recuperation_mot_de_pass=$_COOKIE['mot_de_pass'];							//
    }																			//
    elseif(isset($_SESSION['pseudo']))											//
    {																			//
    $recuperation_pseudo=$_SESSION['pseudo'];									//
    $recuperation_mot_de_pass=$_SESSION['mot_de_pass'];							//
    }																			//
    //////////////////////////////////////////////////////////////////////////////
     
    //verification si le pseudo existe puis le mot de pass\\
    if(isset($recuperation_id) AND isset($recuperation_mot_de_pass))
    {
    mysql_connect("localhost","root","");
    mysql_select_db("test");
    $retour=mysql_query("SELECT COUNT(*) AS nbre_personne FROM membres WHERE pseudo='$recuperation_pseudo'");
    $donnees=mysql_fetch_array($retour);
    	if($donnees['nbre_personne']==1)
    	{
    	$retour=mysql_query("SELECT * FROM membres WHERE pseudo='$recuperation_pseudo'");
    	$donnees=mysql_fetch_array($retour);
    	$b_mot_de_pass=$donnees['mot_de_pass'];
    		if($b_mot_de_pass==$recuperation_mot_de_pass)
    		{
    		$b_niveau=$donnees['niveau'];
    		$b_id=$donnees['id'];
    		}
    	}
    mysql_close();
    }
    else
    {
    $b_niveau="0";
    }
     
     
     
     
    if($b_niveau="0")
    {
    echo "on affiche la page normale";
    }
    elseif($b_niveau="1")
    {
    echo "on affiche la page membre";
    }
    elseif($b_niveau="5")
    {
    echo "on affiche la page administration";
    }
     
     
    ?>

  2. #2
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 981
    Points
    2 981
    Par défaut
    Stocker le mot de passe dans la session c'est pas tres sécurisé.

    Ensuite lors ta requete sql tu n'a aucune protection contre les injections sql.

    Tu pourrais peut être lire ceci :
    - http://julien-pauli.developpez.com/t...-web-securite/ (sur dvp en français)
    - http://phpsecurity.org/ch04.pdf (en anglais)

  3. #3
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    il faut que je fasse comment alor ?

  4. #4
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 981
    Points
    2 981
    Par défaut
    Peut être commencer par lire les 3 liens que j'ai t'ai passé.

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 83
    Points : 95
    Points
    95
    Par défaut
    Pas sécurisé non plus contre le vol de sessions, vérifier sur chaque page que l'ip de l'utilisateur est bien l'ip qu'avait la personne quand elle a ouvert la session peut un peu renforcer la sécurité (mais pas infaillible en cas de réseau local)

    Regarde ici, y'a pas mal d'idées pour la sécurité :
    http://www.developpez.net/forums/showthread.php?t=12254

  6. #6
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Merci pour vos réponse.

    j'ai lu les liens, mais je suis novice en la matière et n'est donc pas tout compris.
    J'ai commencé a me protéger contre les injection sql :
    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
     
    <?php
    session_start(); 
     
    //--------------------------------------------------------------------------//
    //--regarde si cookie ou session existe et créé les variable correspondante-//
    //--------------------------------------------------------------------------//
     
    if(isset($_COOKIE['pseudo']))											
    {																		
    $recuperation_pseudo=$_COOKIE['pseudo'];								
    $recuperation_mot_de_pass=$_COOKIE['mot_de_pass'];						
    }																		
    elseif(isset($_SESSION['pseudo']))											
    {																			
    $recuperation_pseudo=$_SESSION['pseudo'];									
    $recuperation_mot_de_pass=$_SESSION['mot_de_pass'];						
    }																		
     
     
     
     
     //---------------------------------------------------------------------//
     //      protection contre les injection sql							//
     //----------------------------------------------------------------- ---//
    $recuperation_pseudo = htmlentities($recuperation_pseudo, ENT_QUOTES);
    $recuperation_pseudo = addslashes($recuperation_pseudo);
    $recuperation_pseudo = mysql_real_escape_string($recuperation_pseudo);
     
    $recuperation_mot_de_pass = htmlentities($recuperation_mot_de_pass, ENT_QUOTES);
    $recuperation_mot_de_pass = addslashes($recuperation_mot_de_pass);
    $recuperation_mot_de_pass = mysql_real_escape_string($recuperation_mot_de_pass);
     
     
    //--------------------------------------------------------------------------//
    //   Verification du mot de pass et pseudo et créé la variable niveau		//
    //--------------------------------------------------------------------------//
    if(isset($recuperation_id) AND isset($recuperation_mot_de_pass))
    {
    	if($recuperation_pseudo!=NULL AND $recuperation_mot_de_pass!=NULL)
    	{
    	mysql_connect("localhost","root","");
    	mysql_select_db("test");
    	$retour=mysql_query("SELECT COUNT(*) AS nbre_personne FROM membres WHERE pseudo='$recuperation_pseudo'");
    	$donnees=mysql_fetch_array($retour);
    		if($donnees['nbre_personne']==1)
    		{
    		$retour=mysql_query("SELECT * FROM membres WHERE pseudo='$recuperation_pseudo'");
    		$donnees=mysql_fetch_array($retour);
    		$b_mot_de_pass=$donnees['mot_de_pass'];
    			if($b_mot_de_pass==$recuperation_mot_de_pass)
    			{
    			$b_niveau=$donnees['niveau'];
    			$b_id=$donnees['id'];
    			}
    		}
    	mysql_close();
    	}
    }
    else
    {
    $b_niveau="0";
    }
     
     
     
    //----------------------------------------------------------//
    //  					droit d'acces						//
    //---------------------------------------------------------//
    if($b_niveau="0")
    {
    echo "on affiche la page normale";
    }
    elseif($b_niveau="1")
    {
    echo "on affiche la page membre";
    }
    elseif($b_niveau="5")
    {
    echo "on affiche la page administration";
    }
     
     
    ?>
    Si j'ai bien compris,
    il me reste plus ca protéger ma session :
    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
     
    //--------------------------------------------------------------------------//
    //--regarde si cookie ou session existe et créé les variable correspondante-//
    //--------------------------------------------------------------------------//
     
    if(isset($_COOKIE['pseudo']))											
    {																		
    $recuperation_pseudo=$_COOKIE['pseudo'];								
    $recuperation_mot_de_pass=$_COOKIE['mot_de_pass'];						
    }																		
    elseif(isset($_SESSION['pseudo']))											
    {																			
    $recuperation_pseudo=$_SESSION['pseudo'];									
    $recuperation_mot_de_pass=$_SESSION['mot_de_pass'];						
    }
    Pour la session, je stauque l'ip dans base de donné pour la protéger.
    Et pour le cookie, je peut pas faire cela car s'il revien dans 3 jours par exemple, son ip aura changé.

    Pour cette partie là :
    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
     
    //----------------------------------------------------------//
    //  					droit d'acces						//
    //---------------------------------------------------------//
    if($b_niveau="0")
    {
    echo "on affiche la page normale";
    }
    elseif($b_niveau="1")
    {
    echo "on affiche la page membre";
    }
    elseif($b_niveau="5")
    {
    echo "on affiche la page administration";
    }
    est'elle bien sécurisé ou est 'il possible de modifier la variable $b_niveau ?

    Merci de votre aide.

  7. #7
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 981
    Points
    2 981
    Par défaut
    A la rigueur t'a pas besoin de sécuriser plus que ça la session, les vol de sessions ne se font pas tous les jours ...

    Par contre pour protéger des injections sql seule la derniere ligne est utile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $recuperation_pseudo = mysql_real_escape_string($recuperation_pseudo);
    htmlentities() ne sert absolument pas pour protéger des injections sql mais pour protéger l'affichage de données.

    Et addslashes tu oublie, c'est mal.

  8. #8
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Voila, j'ai sécurisé la session avec l'ip :
    vous en penssez coi ?
    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
     
    <?php
    session_start(); 
     
    //--------------------------------------------------------------------------//
    //--regarde si cookie ou session existe et créé les variable correspondante-//
    //--------------------------------------------------------------------------//
     
    if(isset($_COOKIE['pseudo']))											
    {																		
    $recuperation_pseudo=$_COOKIE['pseudo'];								
    $recuperation_mot_de_pass=$_COOKIE['mot_de_pass'];
    $ip="54124754125548745424874";						
    }																		
    elseif(isset($_SESSION['pseudo']))											
    {																			
    $recuperation_pseudo=$_SESSION['pseudo'];									
    $recuperation_mot_de_pass=$_SESSION['mot_de_pass'];						
    }																		
     
    //--------------------------------------------------------------------------//
    //   Verification du mot de pass et pseudo et créé la variable niveau		//
    //--------------------------------------------------------------------------//
    if(isset($recuperation_id) AND isset($recuperation_mot_de_pass))
    {
    	if($recuperation_pseudo!=NULL AND $recuperation_mot_de_pass!=NULL)
    	{
    	$recuperation_pseudo = mysql_real_escape_string($recuperation_pseudo);
    	$recuperation_mot_de_pass = mysql_real_escape_string($recuperation_mot_de_pass);
    	mysql_connect("localhost","root","");
    	mysql_select_db("test");
    	$retour=mysql_query("SELECT COUNT(*) AS nbre_personne FROM membres WHERE pseudo='$recuperation_pseudo'");
    	$donnees=mysql_fetch_array($retour);
    		if($donnees['nbre_personne']==1)
    		{
    		$retour=mysql_query("SELECT * FROM membres WHERE pseudo='$recuperation_pseudo'");
    		$donnees=mysql_fetch_array($retour);
    		$b_mot_de_pass=$donnees['mot_de_pass'];
    		$b_ip=$donnees['ip'];
    			if($b_ip==$recuperation_ip OR $ip=="54124754125548745424874")
    			{
    				if($b_mot_de_pass==$recuperation_mot_de_pass)
    				{
    				$b_niveau=$donnees['niveau'];
    				$b_id=$donnees['id'];
    				}
    			}
    		}
    	mysql_close();
    	}
    }
    else
    {
    $b_niveau="0";
    }
     
     
     
    //----------------------------------------------------------//
    //  					droit d'acces						//
    //---------------------------------------------------------//
    if($b_niveau="0")
    {
    echo "on affiche la page normale";
    }
    elseif($b_niveau="1")
    {
    echo "on affiche la page membre";
    }
    elseif($b_niveau="5")
    {
    echo "on affiche la page administration";
    }
     
     
    ?>

    Cette partie est t'elle bien sécurisé ?
    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
     
    //----------------------------------------------------------//
    //  					droit d'acces						//
    //---------------------------------------------------------//
    if($b_niveau="0")
    {
    echo "on affiche la page normale";
    }
    elseif($b_niveau="1")
    {
    echo "on affiche la page membre";
    }
    elseif($b_niveau="5")
    {
    echo "on affiche la page administration";
    }

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 83
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par Yoshio
    A la rigueur t'a pas besoin de sécuriser plus que ça la session, les vol de sessions ne se font pas tous les jours ...
    Oui le vol pur est dur est quand même pas très répandu, mais par contre ca peut arriver que quelqu'un transmette et divulgue sans savoir son sessid avec l'url (lors d'un c/c) et là sans suivi d'ip on l'a dans l'os à coup sur

  10. #10
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 981
    Points
    2 981
    Par défaut
    Citation Envoyé par Wharenn
    Oui le vol pur est dur est quand même pas très répandu, mais par contre ca peut arriver que quelqu'un transmette et divulgue sans savoir son sessid avec l'url (lors d'un c/c) et là sans suivi d'ip on l'a dans l'os à coup sur
    En effet

    Pour en revenir au vif du sujet, tu devrais tester les choses dans un ordre différent.
    Par exemple comme ceci :


    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
    if (isset() && isset())
    {
        // tu récup l'ip
        $ip = realip();
     
        // requete sql avec WHERE champ_ip = $ip
        if (si resultat avec la requete)
        {
            // Tu teste le login et le mot de passe en même temps
            if (ok)
            {
                // tu met le bon niveau et id de la db
            }
            else
            {
                 $niveau = 0;
            }
        }
        else  
        {
            $niveau = 0;
        }
    }
    else
    {
        $niveau = 0;
    }
    Exemple de code pour realip()


    Voila en espérant que ca va t'aider.

  11. #11
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Voila, j'ai revu mon code comme tu ma dit.
    j'avai oublier effectivement de récuperer l'ip.
    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    <?php
    session_start(); 
     
    //--------------------------------------------------------------------------//
    //--regarde si cookie ou session existe et créé les variable correspondante-//
    //--------------------------------------------------------------------------//
     
    if(isset($_COOKIE['pseudo']))											
    {																		
    $recuperation_pseudo=$_COOKIE['pseudo'];								
    $recuperation_mot_de_pass=$_COOKIE['mot_de_pass'];
    $ip="54124754125548745424874";						
    }																		
    elseif(isset($_SESSION['pseudo']))											
    {																			
    $recuperation_pseudo=$_SESSION['pseudo'];									
    $recuperation_mot_de_pass=$_SESSION['mot_de_pass'];
    $ip = realip();						
    }																		
     
    //--------------------------------------------------------------------------//
    //   Verification du mot de pass et pseudo et créé la variable niveau		//
    //--------------------------------------------------------------------------//
    if(isset($recuperation_id) AND isset($recuperation_mot_de_pass))
    {
    	if($recuperation_pseudo!=NULL AND $recuperation_mot_de_pass!=NULL)
    	{
    	$recuperation_pseudo = mysql_real_escape_string($recuperation_pseudo);
    	$recuperation_mot_de_pass = mysql_real_escape_string($recuperation_mot_de_pass);
    	mysql_connect("localhost","root","");
    	mysql_select_db("test");
    	$retour=mysql_query("SELECT COUNT(*) AS nbre_personne FROM membres WHERE pseudo='$recuperation_pseudo'");
    	$donnees=mysql_fetch_array($retour);
    		if($donnees['nbre_personne']==1)
    		{
    		$retour=mysql_query("SELECT * FROM membres WHERE pseudo='$recuperation_pseudo'");
    		$donnees=mysql_fetch_array($retour);
    		$b_mot_de_pass=$donnees['mot_de_pass'];
    		$b_ip=$donnees['ip'];
    			if($ip==$b_ip OR $ip=="54124754125548745424874")
    			{
    				if($b_mot_de_pass==$recuperation_mot_de_pass)
    				{
    				$b_niveau=$donnees['niveau'];
    				$b_id=$donnees['id'];
    				}
    				else
    				{
    				$b_niveau="0";
    				}
    			}
    			else
    			{
    			$b_niveau="0";
    			}
    		}
    		else
    		{
    		$b_niveau="0";
    		}
    	mysql_close();
    	}
    	else
    	{
    	$b_niveau="0";
    	}
    }
    else
    {
    $b_niveau="0";
    }
     
     
     
    //----------------------------------------------------------//
    //  					droit d'acces						//
    //---------------------------------------------------------//
    if($b_niveau="0")
    {
    echo "on affiche la page normale";
    }
    elseif($b_niveau="1")
    {
    echo "on affiche la page membre";
    }
    elseif($b_niveau="5")
    {
    echo "on affiche la page administration";
    }
     
     
    ?>
    C'est bon comme sa ?

  12. #12
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 981
    Points
    2 981
    Par défaut
    Tu ne récupère jamais le mot de passe.

    Et tu peux ne faire qu'un seule requête sql.

  13. #13
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Si je le récupère le mot de pass
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    if($donnees['nbre_personne']==1)
    		{
    		$retour=mysql_query("SELECT * FROM membres WHERE pseudo='$recuperation_pseudo'");
    		$donnees=mysql_fetch_array($retour);
    		$b_mot_de_pass=$donnees['mot_de_pass'];       <-------je le récupère ici
    		$b_ip=$donnees['ip'];
    			if($ip==$b_ip OR $ip=="54124754125548745424874")
    			{
    				if($b_mot_de_pass==$recuperation_mot_de_pass)  <-------et le vérifi ici
    				{
    				$b_niveau=$donnees['niveau'];
    				$b_id=$donnees['id'];
    				}

  14. #14
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 981
    Points
    2 981
    Par défaut
    Ouais désolé, j'ai pas l'habitude de mettre des * dans mes requêtes sql. Ca récupère généralement 3/4 des champs inutiles de la tables.

    Mais au lieu de tes 2 requêtes sql pourquoi n'en fais tu pas une du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id, niveau
    FROM membres
    WHERE pseudo = $peuso
    AND password = $password;
    Comme ça tu sait directement si l'utilisateur est présent et s'il a mis le bon mot de passe. Et ça évite une requête sql en trop.

  15. #15
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Voila,
    j'ai modifier le code.
    Il est sécurisé la ?
    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
     
    <?php
    session_start(); 
     
    //--------------------------------------------------------------------------//
    //--regarde si cookie ou session existe et créé les variable correspondante-//
    //--------------------------------------------------------------------------//
     
    if(isset($_COOKIE['pseudo']))											
    {																		
    $recuperation_pseudo=$_COOKIE['pseudo'];								
    $recuperation_mot_de_pass=$_COOKIE['mot_de_pass'];
    $ip="54124754125548745424874";						
    }																		
    elseif(isset($_SESSION['pseudo']))											
    {																			
    $recuperation_pseudo=$_SESSION['pseudo'];									
    $recuperation_mot_de_pass=$_SESSION['mot_de_pass'];
    $ip = realip();						
    }																		
     
    //--------------------------------------------------------------------------//
    //   Verification du mot de pass et pseudo et créé la variable niveau		//
    //--------------------------------------------------------------------------//
    if(isset($recuperation_id) AND isset($recuperation_mot_de_pass))
    {
    	if($recuperation_pseudo!=NULL AND $recuperation_mot_de_pass!=NULL)
    	{
    	$recuperation_pseudo = mysql_real_escape_string($recuperation_pseudo);
    	$recuperation_mot_de_pass = mysql_real_escape_string($recuperation_mot_de_pass);
    	mysql_connect("localhost","root","");
    	mysql_select_db("test");
    	$retour=mysql_query("SELECT id, niveau, ip FROM membres WHERE pseudo='$recuperation_pseudo' AND mot_de_pass='$recuperation_mot_de_pass'");
    	$donnees=mysql_fetch_array($retour);
    	mysql_close();
    		if($donnees!=NULL)
    		{
    		$b_ip=$donnees['ip'];
    			if($ip==$b_ip OR $ip=="54124754125548745424874")
    			{	
    			$b_niveau=$donnees['niveau'];
    			$b_id=$donnees['id'];
    			}
    			else
    			{
    			$b_niveau="0";
    			}
    		}
    		else
    		{
    		$b_niveau="0";
    		}
    	}
    	else
    	{
    	$b_niveau="0";
    	}
    }
    else
    {
    $b_niveau="0";
    }
     
     
     
    //----------------------------------------------------------//
    //  					droit d'acces						//
    //---------------------------------------------------------//
    if($b_niveau="0")
    {
    echo "on affiche la page normale";
    }
    elseif($b_niveau="1")
    {
    echo "on affiche la page membre";
    }
    elseif($b_niveau="5")
    {
    echo "on affiche la page administration";
    }
     
     
    ?>

  16. #16
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 981
    Points
    2 981
    Par défaut
    Ouais ca devrait aller.

    Je t'invite par contre à jeter un coup d'oeil à la fonction empty().

  17. #17
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Merci bien.
    Voia j'ai remplacé
    if($donnees!=NULL)
    par :
    if (empty($donnees))

    Cette partie là, est'elle bien sécurisé ?
    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
     
    //----------------------------------------------------------//
    //  					droit d'acces						//
    //---------------------------------------------------------//
    if($b_niveau="0")
    {
    echo "on affiche la page normale";
    }
    elseif($b_niveau="1")
    {
    echo "on affiche la page membre";
    }
    elseif($b_niveau="5")
    {
    echo "on affiche la page administration";
    }

  18. #18
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 981
    Points
    2 981
    Par défaut
    C'est peut etre
    Euh ya rien a sécurisé c'est du bête code PHP.

Discussions similaires

  1. Réponses: 197
    Dernier message: 27/04/2021, 01h11
  2. [Sécurité] Espace membre et accès sécurisé
    Par pierrot10 dans le forum Langage
    Réponses: 2
    Dernier message: 27/02/2008, 16h29
  3. [Choix] Recherche Script type portail, avec espace administration et espace membre
    Par un_passant dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 08/08/2006, 12h56
  4. Réponses: 8
    Dernier message: 26/03/2006, 16h09
  5. [Sécurité] Réalisation d'un espace membre
    Par Goundy dans le forum Langage
    Réponses: 3
    Dernier message: 30/01/2006, 20h01

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