Conseils pour la sécurité

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 : Conseils pour la sécurité

Re: Conseils pour la sécurité

par Genova » 24 avr. 2015, 11:41

D'accord, merci.

Pour l'authenfication, je vais opter pour un système de tickets en me basant sur le tutoriel de Guillaume Affringue (janvier 2007). Le système de ticket semble être une solution viable : le jeton est stocké en cookie chez le client et en variable SESSION côté serveur (le stockage en bdd est-il utile ?) puis je le renouvele à chaque requête du client.
L'utilisation de token c'est très bien pour éviter les failles CSRF (les failles qui consistent à faire effectuer une action à un utilisateur a son insu, comme supprimer un article de blog par exemple) ou l'usurpation de session. Cette méthode est effectivement très sécurisée. Tu peux rajouter aussi une vérification par IP histoire d'associer la session à une IP en guise de double sécurité.

Re: Conseils pour la sécurité

par Loxort » 21 avr. 2015, 23:07

D'accord, merci.

Pour l'authenfication, je vais opter pour un système de tickets en me basant sur le tutoriel de Guillaume Affringue (janvier 2007). Le système de ticket semble être une solution viable : le jeton est stocké en cookie chez le client et en variable SESSION côté serveur (le stockage en bdd est-il utile ?) puis je le renouvele à chaque requête du client.

Re: Conseils pour la sécurité

par Genova » 19 avr. 2015, 15:05

Ce n'est pas PDO qui protège des injections SQL, mais les requêtes préparées.

Re: Conseils pour la sécurité

par tof73 » 19 avr. 2015, 13:34

c'est superflu de verifier à chaque page que les données dans la session sont bien en bdd.
il y a que ton serveur qui peut écrire dans $_SESSION, donc si tu as bien fait les contrôles avant d'écrire ta session, tu peux te contenter de tester l'existence de la session sur les pages suivantes.

pdo protège bien des injections sql, maintenant, des données utilisateurs peuvent causer d'autre problèmes que dans la bdd, donc c'est toujours une bonne chose de vérifier ce que qui est reçu correspond bien à ce que l'on attend.

Conseils pour la sécurité

par Loxort » 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 ?