PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 14-12-2017 10:53:21

LorenSnow
Membre
Inscription : 14-12-2017
Messages : 3

Securité des sessions / Securité générale

Bonjour à tous,

Ceci est mon premier post sur ce forum, je viens de m'inscrire.
Je suis un débutant autodidacte en php,
Et à force de recherche et de travail (depuis environ 6 mois) j'ai pu créer un site internet relié à une base de données.
Un site à vocation commerciale. J'en suis très content.
Voici pour la présentation : )


Je protège la partie Admin de mon site grâce à un formulaire de connexion identifiant / mot de passe.

Une requête est exécutée sur le serveur de base de données : si il existe dans la table utilisateurs un enregistrement avec le même identifiant et le même mot de passe,
alors la requête sélectionne le chiffre du champ " droits " .


La table est comme cela :

id     identifiant       motdepasse        droits

0      admin            mdpadmin           1
1      max               mdpmax             2
2      visiteur           mdpvisiteur        3


Le chiffre  " droits " est ensuite enregistré dans une variable de session. $_SESSION['droits'].

Ensuite, lors de l'arrivée sur chaque page, cette variable est controlée et charge en fonction, le template admin ou le template visiteur.
Donc, si $_SESSION['droits'] == 1 ; Cela charge le template Admin.
si $_SESSION['droits'] == 3 ; Cela charge le template Visiteur.


Ma question est la suivante : Ce mode est-il assez sécurisé ?
En particulier, serait-il possible qu'un utilisateur malveillant puisse définir $_SESSION['droits'] == 1 ?


Je vous remercie pour votre attention.
Bonne journée.


Lorenzo

Hors ligne

#2 14-12-2017 19:19:09

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Securité des sessions / Securité générale

Salut,

Faudrait voir un peu de code wink

LorenSnow a écrit :

Le chiffre  " droits " est ensuite enregistré dans une variable de session. $_SESSION['droits'].

de quelle façon ??

enfin bref, en voyant le code on peut voir s'il y des injections possibles

a++

Hors ligne

#3 20-12-2017 12:56:23

LorenSnow
Membre
Inscription : 14-12-2017
Messages : 3

Re : Securité des sessions / Securité générale

<?php
    //Connexion a la base de donnees
   
    require 'admin/templates/connexionBase.php';
   
   
    //Verifie que l'identifiant rentré dans le formulaire de connexion est dans la table t_utilisateur
   
    if (isset($_POST['validerConnexion']) AND isset($_POST['identifiant']))
    {
        $sqlCon = $pdo -> prepare ( " SELECT * FROM t_utilisateurs WHERE identifiant = ?" )
        or die (print_r ( $pdo -> errorInfo())) ;
       
        $sqlCon -> execute ( array ( $_POST['identifiant'] ));
               
        $nbCon = $sqlCon -> rowcount() ;

       
        if ( $nbCon == 1 )
        {
            $resCon = $sqlCon -> fetch() ;
           
           
           
            //Si il existe l'identifiant, compare le mot de passe
            // Si le mot de passe est correct, rentre dans la variable session droit le champ 'droits' de la base de données, soit 1. 2 ou 3 ou 4
           

            if ( $resCon['password'] == $_POST['password'] )
            {
                $_SESSION['droits'] = $resCon['droits'] ;
               
            }
           
           
           
            // Si le mot de passe est faux
            else
            {
                $_SESSION['droits'] = 'faux' ;
                $erreurCon = "Mot de passe erroné." ;
            };
           
           
           
           
        }
       
       
        // Si l'utilisateur n'existe pas
        else
        {
            $_SESSION['droits'] = 'faux' ;
            $erreurCon = "Ce nom d'utilisateur n'existe pas." ;
           
        };
   
       
    };

Hors ligne

Pied de page des forums