0% ont trouvé ce document utile (0 vote)
7 vues5 pages

Authentification par Cookies en PHP

Transféré par

philophiloss46
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues5 pages

Authentification par Cookies en PHP

Transféré par

philophiloss46
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Ce programme ne nécessite aucun fichier externe manquant (index.

htm ou autre) car il


génère dynamiquement la page de connexion et utilise les cookies et en-têtes HTTP pour
gérer l'état d'authentification.

🍪 Programme 12 : Analyse de l'Authentification Basée


sur les Cookies

Ce programme implémente un système d'authentification plus sophistiqué que Basic/Digest


Auth. Il utilise les Cookies HTTP pour maintenir une session utilisateur après une connexion
réussie, évitant ainsi de devoir renvoyer les identifiants à chaque requête.

Logique Globale

1.​ Vérification de Session : La fonction is_authenticated() vérifie la présence d'un Cookie


de Session valide (ESPSESSIONID=1) dans les en-têtes HTTP du client.
2.​ Connexion : La fonction handleLogin() gère la soumission du formulaire de connexion et,
en cas de succès, crée le cookie de session et redirige l'utilisateur.
3.​ Déconnexion : La déconnexion est gérée en envoyant un nouveau cookie qui invalide
l'ancien (ESPSESSIONID=0).
4.​ Accès Contrôlé : handleRoot() exige que l'utilisateur soit authentifié avant de servir le
contenu protégé.

1. Fonctions de Vérification et de Session

bool is_authenticated()

Ligne de Code Explication Technique et Focus/Valeur


Rôle
if Vérification d'En-tête. Point d'entrée de la
([Link]("Cookie Contrôle si la requête HTTP session.
")) { ... } entrante contient l'en-tête
Cookie, qui est l'endroit où
le navigateur stocke les
informations de session.

String cookie = Récupère la valeur Lecture des données de


[Link]("Cookie"); complète de l'en-tête session.
Cookie (ex:
ESPSESSIONID=1;
other=value).

if Validation de l'État de Mécanisme de sécurité.


([Link]("ESPSESSI Session. Recherche la
ONID=1") != -1) { ... } chaîne de session
spécifique et l'état valide
(=1) dans le cookie. Si
trouvée (!= -1), l'utilisateur
est considéré comme
authentifié.

return true; / return false; Retourne l'état


d'authentification.

void handleLogin() (Gestion Connexion/Déconnexion)

Ligne de Code Explication Technique et Focus/Valeur


Rôle

if Gestion de la Logique de déconnexion.


([Link]("DISCONNE Déconnexion. Vérifie si
CT")) { ... } l'URL contient le paramètre
?DISCONNECT=YES.

[Link]("Set-Co Envoie l'en-tête Révocation de session.


okie", "ESPSESSIONID=0"); Set-Cookie au navigateur
pour invalider la session
en cours. ESPSESSIONID=0
réinitialise le cookie de
session.

[Link]("Locati Redirige le client vers la Redirection HTTP.


on", "/login"); / page de connexion après la
[Link](301); déconnexion, en utilisant le
code de statut 301 Moved
Permanently.

if Soumission du Vérification des


([Link]("USERNAME Formulaire. Vérifie si les identifiants.
") && champs USERNAME et
[Link]("PASSWORD PASSWORD ont été soumis.
")) { ... }

if ([Link]("USERNAME") Validation des


== "admin" && Crédentiels. Logique
[Link]("PASSWORD") simple de comparaison
== "password") { ... } avec les chaînes de
caractères codées en dur.

[Link]("Set-Co Création de Session. En Établissement de session.


okie", "ESPSESSIONID=1"); cas de succès de la
connexion, cet en-tête est
envoyé pour définir le
cookie de session avec
l'état valide (=1).

[Link]("Locati Redirige l'utilisateur vers la Redirection après succès.


on", "/"); / [Link](302); page d'accueil (/) avec le
code 302 Found après
l'authentification.

(Code de génération Si la connexion échoue, le


HTML) code génère la page de
connexion contenant le
formulaire HTML.
void handleRoot() (Page Protégée)

Ligne de Code Explication Technique et Focus/Valeur


Rôle

if (!is_authenticated()) { Contrôle d'Accès. Utilise la Politique d'Accès.


return fonction de vérification. Si
[Link]("Locati l'utilisateur n'est pas
on", "/login"); authentifié, il est
[Link](302); } immédiatement redirigé
vers la page /login via une
réponse 302 Found.

String content = Génère le contenu HTML Contenu après


"<html>...<body>"; de la page protégée. authentification.

2. Configuration (setup)

Ligne de Code Explication Technique et Focus/Valeur


Rôle

[Link]("/", handleRoot); Enregistre le gestionnaire Routage de la ressource


de la racine, qui est la principale.
ressource protégée.

[Link]("/login", Enregistre le gestionnaire Routage du point d'entrée


handleLogin); de connexion, qui est la d'authentification.
ressource publique.

[Link](handle Le gestionnaire d'erreur


NotFound); 404 est public (aucune
vérification
is_authenticated n'est
requise).

3. Les Cookies vs. Basic/Digest Auth

Ce programme montre un changement de paradigme de sécurité :


●​ Basic/Digest Auth (Programmes 6, 7, 8) : Chaque requête nécessite un en-tête
Authorization pour valider les crédentiels (ou leur hachage). Cela est géré par la logique
du protocole HTTP.
●​ Cookie Auth (Programme 12) : L'utilisateur s'authentifie une seule fois via un
formulaire. Le serveur envoie un cookie au navigateur. Pour toutes les requêtes
suivantes, le navigateur renvoie automatiquement ce cookie, et le serveur utilise le cookie
comme jeton de session pour valider l'accès. C'est le modèle utilisé par la grande
majorité des sites web modernes.

Vous aimerez peut-être aussi