En quoi les sessions sont dangereuses ….
Hello Hello,
J'étais dans mon bain hier soir, discutant par SMS avec un confrère parisien, co-fondateur de la société "MyWebTailors", qui faisait appel à mon expertise pour la sécurité de l'un de ces nouveaux produits !
J'ai été très flatté qu'il fasse appel à moi pour son "audit".
Le produit en question tourne en effet autours de la sécurité des données, de votre anonymat, et tout et tout ! ^^
Bref une utilisation intensive de chiffrement, pour vous protéger.
C'est alors que l'on s'est posé la question fatidique ...
Pour chiffrer et déchiffrer ... il faut une clé ...
Un petit mot, quelques lettres, des chiffres, avec si l'on souhaite des caractère spéciaux ...
Bref ... quelques choses qui ne permette qu'à vous seul, de voir et de créer un contenu "secret"
Mais ... par sécurité il n'est pas recommandé de stocker ces fameuses "clés" sur un serveur ...
Cela permettrait à un assaillant de déchiffrer tout ce qu'il y a dessus !
Et en même temps ... il n'est non plus très agréable pour un utilisateur de saisir et de ressaisir 1000 fois cette clé pour chiffrer, déchiffrer le contenu ...
Alors comment stocker de manière temporaire / provisoire... cette fameuse "clé".
De manière à ce que l'utilisateur ne l'a saisisse qu'une seule fois durant sa session.
Il y a bien la méthode "$_SESSION" ... qui pourrait être utile ...
Mais ...
Si jamais intrusion il y a sur le serveur ... les attaquants pourront accéder à ces fameux petits fichiers de session, contenant les clé de chaque utilisateurs ... chiffré ou non.
Il pourront alors, soit les décrypter, soit les exploiter en se forgeant des cookies de session ... et donc accéder au contenu secret de TOUS les utilisateurs !
C'est alors qu'intervient le :
sessionStorage :
sessionStorage.setItem('cle', CLE_CHIFFREE);
sessionStorage.getItem('cle);
Une fonction javascript, permettant, tout comme les cookies, de stocker cette clé (chiffré) sur son poste le temps de son utilisation.
Alors bon, on va me dire que c'est pas très sécurisé, toussa toussa ...
Si l'utilisateur à une vérole sur son pc, il n'y a pas d'autre moyen de le protéger.
Comment lutter contre un troyen disposant d'un keylogger, générant des captures d'écran, et traçant les mouvement de votre souris ...
La seule vrai façon c'est de booter sur un live CD "propre" (et encore, ... )
Mais pour en revenir au sessionStorage ...
De prime abords, les données ne sont conservées "normalement" QUE durant la navigation de l'utilisateur ...
L'utilisateur quitte le site, hop, plus de donnée.
Et puis l'argument fatale ...
Chaque utilisateurs dispose de sa clé localement, et ce, durant toute sa session ...
Donc un attaquant, ne pourra jamais cibler et obtenir TOUTES les clefs, à mois bien sur d'avoir accès aux pc de tous les utilisateurs ...
Voilà, j'espère que cette petite analyse vous aura permis de comprendre certains fonctionnement et enjeux en terme de sécurité.