Conseils pour la sécurité
Posté : 19 avr. 2015, 13:15
Bonjour,
J'ai besoin d'éclaircissements sur plusieurs points portant sur la sécurité.
Je suis en train de construire un espace de gestion (pour interagir facilement avec la bdd) et j'ai créé trois fonctions de vérification :
- la vérification de connexion : prend en paramètre le formulaire de connexion et vérifie le couple adresse mail / mdp dans la base de données.
- la vérification de session : vérifie qu'une session est ouverte et valide.
- la vérification des droits : affiche les vues en fonction des droits et vérifie que l'utilisateur possède les droits pour effectuer des actions (supprimer, modifier, ajouter).
Tout d'abord, dès qu'un utilisateur se connecte et qu'il existe (verification de connexion), je stocke ses identifiants (email, mot de passe haché) dans la variable $_SESSION. Ensuite, lors de chaque page appelée, j'utlise verification-session qui vérifie que les variables dans $_SESSION sont bien présentes dans la bdd. Si la session est valide, verification-droits utilise encore une fois $_SESSION pour récupérer les droits de l'utilisateur connecté sur la page appelée.
Cette technique est-elle peu sécurisée ?
Après mes lectures, il s'avère qu'il n'est pas recommandé de stocker le pass (même haché) dans la variable session... Toutefois, je ne vois pas comment vérifier l'authentification autrement. J'ai lu des articles parlant du jeton de session mais j'ai dû mal à comprendre son ou ses applications concrètes (stockage en bdd, couplage avec l'adresse IP / version de la machine utilisateur, passage du jeton en paramètre hidden des formulaires, ...?).
Pour finir, la connexion PDO suffit-elle pour protéger des injections SQL ?
J'ai besoin d'éclaircissements sur plusieurs points portant sur la sécurité.
Je suis en train de construire un espace de gestion (pour interagir facilement avec la bdd) et j'ai créé trois fonctions de vérification :
- la vérification de connexion : prend en paramètre le formulaire de connexion et vérifie le couple adresse mail / mdp dans la base de données.
- la vérification de session : vérifie qu'une session est ouverte et valide.
- la vérification des droits : affiche les vues en fonction des droits et vérifie que l'utilisateur possède les droits pour effectuer des actions (supprimer, modifier, ajouter).
Tout d'abord, dès qu'un utilisateur se connecte et qu'il existe (verification de connexion), je stocke ses identifiants (email, mot de passe haché) dans la variable $_SESSION. Ensuite, lors de chaque page appelée, j'utlise verification-session qui vérifie que les variables dans $_SESSION sont bien présentes dans la bdd. Si la session est valide, verification-droits utilise encore une fois $_SESSION pour récupérer les droits de l'utilisateur connecté sur la page appelée.
Cette technique est-elle peu sécurisée ?
Après mes lectures, il s'avère qu'il n'est pas recommandé de stocker le pass (même haché) dans la variable session... Toutefois, je ne vois pas comment vérifier l'authentification autrement. J'ai lu des articles parlant du jeton de session mais j'ai dû mal à comprendre son ou ses applications concrètes (stockage en bdd, couplage avec l'adresse IP / version de la machine utilisateur, passage du jeton en paramètre hidden des formulaires, ...?).
Pour finir, la connexion PDO suffit-elle pour protéger des injections SQL ?