Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/05/2007, 10h51   #1
Membre habitué
 
Inscription : octobre 2005
Messages : 641
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 641
Points : 143
Points : 143
Par défaut [Sécurité] Mon accès est-il bien sécurisé ?

Bonjour à toutes et à tous,

j'ai fait une partie admin protégé par login/mdp via MYSQL et les sessions.

Lorsque l'authentification est correcte, je crée ces variables de sessions :
Code :
1
2
3
4
$_SESSION['authentification'] = TRUE;
$_SESSION['login'] = $login;
$_SESSION['prenom'] = $admin_prenom;
$_SESSION['nom'] = $admin_nom;
Maintenant ma question, c'est : est-ce le script suivant sécurise suffisamment bien la page Web le contenant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
session_start();
require_once("constantes.inc.php");
 
if ($_SESSION["authentification"] === TRUE && $_SESSION["login"] && $_SESSION["prenom"] && $_SESSION["nom"]) {
	// aucun problème, l'utilisateur peut continuer...
} else {
	// l'utilisateur n'est pas autorisé à accéder à cette page, il est reconduit sur la page d'accueil du site
	header("Location: " . $URL_SITE);
	exit();
}
?>
Merci d'avance

@ bientôt
Tchupacabra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 12h33   #2
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 27
Points : 27
ceci serait mieu :

Code :
1
2
3
4
5
6
7
if ($_SESSION["authentification"] == TRUE && isset($_SESSION["login"]) && isset($_SESSION["prenom"]) && isset($_SESSION["nom"])) {
	// aucun problème, l'utilisateur peut continuer...
} else {
	// l'utilisateur n'est pas autorisé à accéder à cette page, il est reconduit sur la page d'accueil du site
	header("Location: " . $URL_SITE);
	exit();
}
Stouille89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2007, 11h45   #3
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
Non il n'y a aucune sécurité avec ce que tu fais.

Ton script va creer un variable de session genre :
Citation:
login:s:6:"yoshio";prenom:s:4:"truc"; ...
Si un utilisateur arrive a savoir l'identifiant de session, il pourra récupérer les information de cette session. Donc ce n'est pas tres sécurisé.

Pour rendre plus difficile le vol de session, il faut déja utiliser la fonction session_regenerate_id(). (il faut pas régénérer la session à chaque page non plus).

Ensuite tu peux vérifire s'il n'y a pas de vol de session en stockant en plus des info que tu stocke deja (cad auth, login, prenom, ...), le naviguateur web de l'utilisteur avec $_SERVER['HTTP_USER_AGENT'].
Un inconvéniant si l'utilisateur s'amuse a passer d'internet a firefox d'une page a l'autre il va devoir se reloguer chaque fois; mais je doute fort que ca arrive beaucoup.

Ensuite tu peux utiliser un token unique et le propager dans l'url.

Tiens tout est décrit la dedans : http://phpsecurity.org/ch04.pdf
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 17h54   #4
Membre habitué
 
Inscription : octobre 2005
Messages : 641
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 641
Points : 143
Points : 143
Merci à vous,

par contre je ne comprends pas trop ta méthode Yoshio...
Admettons qu'après authentification, je stocke les infos comme ceci dans la base :
Code :
1
2
3
4
session_start();
$query = "INSERT INTO `session` (sid, id_admin, ip, browser) 
                VALUES ('".session_id()."', ".$admin_id.", '".getIP()."', '".getBrowser()."');";
[...]
Pour s'assurer que c'est la bonne personne, il faut tester en début de chaque page sécurisée si ses infos (SID, admin_id, IP et navigateur) correspondent bien à celle enregistrées dans la base ?

Tchupacabra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 19h18   #5
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
Aurais tu lu le lien ... ca n'a pas l'air d'être le cas.
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2007, 19h40   #6
Membre habitué
 
Inscription : octobre 2005
Messages : 641
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 641
Points : 143
Points : 143
bah je t'avouerais qu'un article en anglais me fait vite décrocher...

donc mon idée n'est pas bonne ?
Tchupacabra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2007, 11h59   #7
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
Utiliser une base de données pour sécuriser vos sessions de ma signature.

Ton idée est bonne mais stocké l'ip c'est assez embetant; si mon routeur reboot et que je laisse tourner firefox je veux pourvoir recup toute mes session. Dans ton cas ca va être dure.

Et je te conseille FORTEMENT de lire cet article même s'il est en anglais.
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h51.


 
 
 
 
Partenaires

Hébergement Web