Espace membre, sessions et sécurisation en PHP


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 9:34

Bonjour,

J'ai créé mon premier espace membre à la main comme un grand.
J'ai surement du laisser des trous de partout.
Auriez vous des tutos ou recommandations pour sécuriser un espace membre ?
Notamment : quelle est votre fonction/routine pour vérifier que l'utilisateur est bien connecté (et qu'il n'a pas usurpé une identité) ? Quelles sont les vérifications à faire ?

Merci à tout ceux qui auront pris le temps de lire ce message.

mahdivitchee
WRInaute discret
WRInaute discret
 
Messages: 175
Inscription: 22 Mar 2010

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 11:47

Bonjour

1er pas :
dans la 1er page tu vérifie est ce le login existe , si oui vérifie le mot de passe ; si correspondant à login tu crée un session avec le nom ou l'id de ce utilisateur
exemple détaillés içi : http://www.phpdebutant.org/article69.php

2éme pas :
dans les autres pages tu vérifie est ce que le session qui tu as crée n'existe pas, si oui tu rediriger la page vers la page d'index avec une message d'erreur

exemple : ( ce code doit dans le tête de page ) ( 'pseudo' est nom de session )
Code: Tout sélectionner
<?php
session_start();
error_reporting(E_ALL ^ E_NOTICE);
if(!session_is_registered("pseudo")){
header("Location: accueil.php?pass=err");
}
?>


lire aussi ce topic : http://www.siteduzero.com/tutoriel-3-14563-variables-superglobales-ses ... okies.html

bonne journée


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 13:49

Merci j'ai du mal m'exprimer.
J'ai déjà codé l'espace et je me contente de vérifier les sessions de la même manière que tu le proposes mais ça me semble beaucoup trop léger.
Il me paraît un peu facile de bidouiller les sessions pour se faire passer pour un membre, non ?
De plus, jee n'ai pas de protection contre un bot qui ferait volontairement planter le serveur avec des requêtes en masse sur le formulaire d'inscription.


spout
WRInaute accro
WRInaute accro
 
Messages: 4378
Inscription: 14 Mai 2003

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 13:51

milkiway a écrit:Notamment : quelle est votre fonction/routine pour vérifier que l'utilisateur est bien connecté (et qu'il n'a pas usurpé une identité) ? Quelles sont les vérifications à faire ?

Avec un "fingerprint": http://shiflett.org/articles/the-truth-about-sessions


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 14:10

Merci, là pour le coup, c'est hors mes capacités!


spout
WRInaute accro
WRInaute accro
 
Messages: 4378
Inscription: 14 Mai 2003

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 14:25

On ne connait pas ton code de login / sessions:

1) Code commun à toutes les pages avec identification:
Code: Tout sélectionner
<?php
$fingerprint = 'MySecretFingerPrintingKeyHoooohooo'.$_SERVER['HTTP_USER_AGENT'].$_SERVER['HTTP_ACCEPT_CHARSET'];
$fingerprint = md5($fingerprint.session_id());
?>


2) Au login correct, tu enregistres ce $fingerprint en session:
Code: Tout sélectionner
<?php
$_SESSION['fingerprint'] = $fingerprint;
?>


3) Pour vérifier l'usurpation de session, sur toutes les pages où tu dois vérifier la session:
Code: Tout sélectionner
<?php
if($_SESSION['fingerprint'] != $fingerprint){
   //logout forcé
}
?>


Edit: sinon il y a PEAR::Auth:
http://pear.php.net/manual/en/package.authentication.auth.intro.php
http://pear.php.net/manual/en/package.authentication.auth.auth.setadva ... curity.php
Dernière édition par spout le Jeu Aoû 12, 2010 14:30, édité 1 fois.


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 14:29

Ah donc ce que je fais est suffisant donc (j'ai ajouté l'IP dans ce "fingerprint").

Bon, c'est si simple que ça. Merci.


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 15:02

Par contre, une fois le membre connecté et vérifié, lors de la génération des pages, quelles variables utiliser ? Par exemple si je veux faire sa page de profil, puis je sans crainte procéder comme ceci :
Code: Tout sélectionner
<h1>Profil de <?php echo $_SESSION['login']) ?></h1>

Càd en faisant confiance aux sessions et en stockant les infos dedans ?
Ou alors je fais une requete pour aller chercher dans la base l'info depuis l'id du membre ?

Merci

Robinson
WRInaute passionné
WRInaute passionné
 
Messages: 2233
Inscription: 25 Oct 2005

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 15:18

Tu peux y stocker quelques infos de base, mais n'abuse pas trop, c'est stocké dans des fichiers il me semble.
Le plus simple reste d'y stocker l'identifiant, pseudo et mot de passe que tu peux vérifier avec la base de données sur quelques pages clés.
Il faut trouver un compromis pour économiser quelques requêtes.


ortolojf
WRInaute passionné
WRInaute passionné
 
Messages: 1666
Inscription: 14 Aoû 2002

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 17:51

Bonsoir

Je ne savais pas qu'il était possible de simuler une session, c'est-à-dire connaître la valeur et le nom de la variable de session.

Comment peut-on faire semblant d'avoir une session correcte, avec une variable de session forgée ?

Merci beaucoup de vos réponses.

Jean-François Ortolo

Robinson
WRInaute passionné
WRInaute passionné
 
Messages: 2233
Inscription: 25 Oct 2005

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 18:59

Simuler, non, par contre s'il y a une faille sur le site (injection de code), le hacker peut récupérer l'id de la session des personnes tombant sur ce code, il peut ainsi se faire passer pour eux. (d'où l'intérêt du "fingerprint", une empreinte de ton ordinateur avec quasi aucune chance de retrouver la même chez le hacker)


ortolojf
WRInaute passionné
WRInaute passionné
 
Messages: 1666
Inscription: 14 Aoû 2002

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 19:19

Robinson a écrit:Simuler, non, par contre s'il y a une faille sur le site (injection de code), le hacker peut récupérer l'id de la session des personnes tombant sur ce code, il peut ainsi se faire passer pour eux. (d'où l'intérêt du "fingerprint", une empreinte de ton ordinateur avec quasi aucune chance de retrouver la même chez le hacker)



Bonsoir Robinson

Bon, mais à supposer que quelqu'un ait le nom et la valeur de l'identificateur de session d'une autre personne, et que cet identificateur de session suffise à authentifier la personne...

Cet identificateur de session, doit bien être contenu dans une variable de session ( par exemple $_SESSION['id'] ) au moment où le hacker parcourt le site ?

Alors, comment le hacker va-t-il alimenter cette variable de session, vu qu'il n'a aucune action possible sur les variables de session durant le parcours de ce site, vu que la session n'est valable que pour ce site ?

Merci beaucoup de vos réponses.

Amicalement.

Jean-François Ortolo


spout
WRInaute accro
WRInaute accro
 
Messages: 4378
Inscription: 14 Mai 2003

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 20:00

ortolojf a écrit:Alors, comment le hacker va-t-il alimenter cette variable de session, vu qu'il n'a aucune action possible sur les variables de session durant le parcours de ce site, vu que la session n'est valable que pour ce site ?

Regarde le lien que j'ai cité plus haut, c'est expliqué.
En bref, on peut voler une session avec le paramètre PHPSESSID en _GET ou en cookie.

Robinson
WRInaute passionné
WRInaute passionné
 
Messages: 2233
Inscription: 25 Oct 2005

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 20:23

spout, 5 ans déjà que tu nous donnes des cours sur le fingerprint ^^

http://forum.webrankinfo.com/concours-comptabilisation-clic-t39531.html#p380221


spout
WRInaute accro
WRInaute accro
 
Messages: 4378
Inscription: 14 Mai 2003

Re: Espace membre, sessions et sécurisation en PHP

Message le Jeu Aoû 12, 2010 20:32

@Robinson, oui je sais, mais c'est toujours d'actualité et efficace non ?

Espace membre, sessions et sécurisation en PHP

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité