Vous n'êtes pas identifié(e).
Pages :: 1
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
Salut,
Faudrait voir un peu de code
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
<?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
Pages :: 1