Académique Documents
Professionnel Documents
Culture Documents
ESPACE SÉCURISÉ
DWWM
TIMMER JENNIFER 1
LES SESSIONS
DWWM
TIMMER JENNIFER 2
1- Les sessions
◦ La superglobale $_SESSION est un tableau associatif qui contient toutes les
variables de session.
◦ Une session peut contenir tout type de données : nombre, chaîne de caractères
et même un tableau.
TIMMER JENNIFER 3
1- Les sessions
TIMMER JENNIFER 4
1- Initialisation d’une session
◦ Nous allons utiliser une fonction native de php pour démarrer une session. Cette
fonction vérifie l’état de ma session courante : si elle existe on la poursuit, sinon on
la crée
<?php
Session_start();
?>
Avant d'utiliser les sessions sur une page, on doit toujours utiliser la fonction
session_start() placée avant tout envoi de code HTML, et donc généralement
tout en haut de votre page PHP
Nous appellerons cette fonction sur toutes les pages qui utilisent les sessions.
TIMMER JENNIFER 5
1- Initialisation d’une session
Cela veut dire que dès que vous transmettrez un caractère HTML, les en-têtes seront
envoyés et vous ne pourrez plus les modifier, vous ne pourrez donc plus écrire le
cookie de session.
TIMMER JENNIFER 6
2- Lecture et écriture d’une session
Une session vide n’a aucune valeur et aucun intérêt. Nous allons donc lui
attribuer une valeur à sauvegarder.
Pour créer une nouvelle variable de session, il faut ajouter une clé et une
valeur au tableau $_SESSION :
<?php
Session_start();
$_SESSION[‘login’]= ‘MonPseudo’;
TIMMER JENNIFER 7
2- Lecture et écriture d’une session
Echo $_SESSION[‘login’];
TIMMER JENNIFER 8
3- Destruction d’une session
// On détruit la session
session_destroy();
TIMMER JENNIFER 9
LES COOKIES
DWWM
TIMMER JENNIFER 10
2- Les cookies
Un cookie est un fichier petit fichier texte que l'on stocke sur le
poste du visiteur.
Exemple :
Vous stockez le pseudo du visiteur. Lorsqu'il revient sur votre site,
vous pouvez lire dans le cookie et lui afficher "Bonjour
votre_pseudo".
TIMMER JENNIFER 11
1- Ecrire un cookie
setcookie (string nom, string valeur, string expiration, string chemin, string domaine,
string securise)
le 3éme paramètre définit la durée de vie pour du cookie, il sera ensuite supprimé.
TIMMER JENNIFER 12
1- Ecrire un cookie
Exemple :
<?php
$value = Cookie de test';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600); /* expire dans 1 heure */
?>
Comme pour session_start setcookie doit être placé avant votre code HTML.
TIMMER JENNIFER 13
2- Afficher un cookie
<?php
// Afficher un cookie
echo $_COOKIE["TestCookie"];
TIMMER JENNIFER 14
3- Modifier un cookie
4- Supprimer un cookie
TIMMER JENNIFER 15
HACHER LES MDP
DWWM
TIMMER JENNIFER 16
1- Pourquoi hacher un mot de passe
- Il va de soi qu’il n’est pas acceptable de stocker en base les mots de passe
en clair.
2- Fonctions de hachage
Ces fonctions sont particulièrement adaptées pour le stockage de mot de
passe :
- à partir du hash, il est impossible de retrouver directement le mot de passe
d’origine
TIMMER JENNIFER 18
3- Limites du hachage
- Dictionnaire d’empreintes :
On calcule toutes les empreintes de tous les mdp possibles, puis on les garde
dans un fichier. Il suffira ensuite de chercher notre empreinte dans notre
fichier et de lire le mot de passe associé. Problème : ça prend de la place
TIMMER JENNIFER 19
3- Limites du hachage
- Rainbow tables :
Les tables arc-en-ciel essayent de concilier taille de fichier et temps de calcul
raisonnable.
Une attaque par Rainbow table se déroule en 2 étapes. Il faut tout d’abord
générer une table, puis cracker une ou plusieurs empreintes à l’aide de cette
table.
TIMMER JENNIFER 20
4- Utiliser des fonctions de hachage
TIMMER JENNIFER 21
4- Utiliser des fonctions de hachage
Liste de paramètres :
password
Le mot de passe utilisateur.
algo
Une constante de l'algorithme de mot de passe représentant l'algorithme à utiliser
lors du hachage du mot de passe.
options
Un tableau associatif contenant les options.
TIMMER JENNIFER 22
5- Comment ca marche ?
En fait, à partir du moment où vous avez un mot de passe à hacher, il suffit d’un seul
appel de fonction :
$password = ‘JenniferAToujoursRaison';
$hash = password_hash($password, PASSWORD_DEFAULT);
var_dump($hash);
TIMMER JENNIFER 23
6- Vérifier si un mot de passe est correct
Pour cela, ici encore, une seule fonction à appeler, qui se charge de tout le travail :
password_verify().
Cette fonction attend en paramètres le mot de passe, et le hash que nous avions
stocké précédemment :
$password = ‘JenniferAToujoursRaison';
$hash = '$2y$10$0XPjx7G0kX1OxopwGQbsIehW/56X95vajb45APWz5EZx.aJpXEdli';
if (password_verify($password, $hash)) {
echo "OK";
}
else {
echo "KO";
}
En sortie, un simple true ou false, selon si le mot de passe correspond ou non au hash
TIMMER JENNIFER 24
ON ASSEMBLE
TOUT ÇA !
DWWM
TIMMER JENNIFER 25
Exercice Espace Membre
TIMMER JENNIFER 26