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 06/05/2006, 20h05   #1
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Par défaut [Sécurité] Est-il nécessaire de filtrer les variables de session ?

bonjour,

Je me demande s'il est utile de filtrer les variables de session. Par exemple :

Code :
$_SESSION[id]=mysql_real_escape_string(htmlspecialchars($_SESSION[id]))
C'est valable ou inutile selon vous ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 20h18   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Avant toute chose, il convient de rappeler que les fonctions htmlentities() et htmlspecialchars() ne devraient pas être appliqués systématiquement avant d'insérer des chaînes dans une BDD mais après.

Ensuite, concernant ta question, tout dépend de ta politique.
Si tu filtres les données avant de les mettre dans la session, tu n'as plus besoin de le faire par la suite.

Tout dépend...
D'un certain point de vue, l'utilisateur n'a aucun contrôle sur tes sessions. D'un autre, si ton code n'est pas parfait, l'utilisateur peut avoir un certain contrôle sur les sessions...

La meilleure solution est d'adopter une technique imparable comme, par exemple, le poka-yoké suggéré par macbook il y a quelque temps.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 20h33   #3
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Merci pour ta réponse,

Citation:
Ensuite, concernant ta question, tout dépend de ta politique.
Si tu filtres les données avant de les mettre dans la session, tu n'as plus besoin de le faire par la suite.
Oui je filtre avant, mais justement, j'ai pensé à cela : une personne pirate une session en la sniffant : de là elle doit pouvoir balancer une variable de session trafiquée dans la base.
Donc ne vaut-il pas mieux la filtrer tout de même, si elle est utilisée pour une requête sql ? Et si oui, la syntaxe que j'ai écrit plus haut est-elle correcte ?

Citation:
D'un certain point de vue, l'utilisateur n'a aucun contrôle sur tes sessions. D'un autre, si ton code n'est pas parfait, l'utilisateur peut avoir un certain contrôle sur les sessions...
Si tu peux en dire plus...

Citation:
La meilleure solution est d'adopter une technique imparable comme, par exemple, le poka-yoké suggéré par macbook il y a quelque temps.
J'ignore ce qu'est ce poka-yoké.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2006, 23h07   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Citation:
Envoyé par psychoBob
Oui je filtre avant, mais justement, j'ai pensé à cela : une personne pirate une session en la sniffant : de là elle doit pouvoir balancer une variable de session trafiquée dans la base.
Donc ne vaut-il pas mieux la filtrer tout de même, si elle est utilisée pour une requête sql ?
Si ton gars arrive à sniffer une session, il est bigrement fort (ou ton site a de vraies vraies failles), puisqu'il me semble que tout se passe en local pour les sessions. Rien ne transite par le réseau, ce ne sont pas des cookies. C'est tout depuis la RAM jusqu'à la RAM du serveur. Si ton gars arrive à s'introduire dans ta session, alors je pense qu'il est déjà trop tard pour toi. Plus la peine de filtrer quoi que ce soit : le pirate a déjà fait ce qu'il voulait.

Citation:
Envoyé par psychoBob
Et si oui, la syntaxe que j'ai écrit plus haut est-elle correcte ?
Non, je l'ai dit plus haut, tu ne devrais pas utiliser htmlcspecialchars() car ce n'est pas une fonction de filtrage mais d'affichage.
En outre, il est préférable de traiter les valeurs numériques en tant que telles plutôt que de leur appliquer mysql_real_escape_string() car, comme son nom l'indique, cette fonction est à destination des chaînes de caractères

Citation:
Envoyé par psychoBob
Si tu peux en dire plus...
Filtrage imparfait ==> possibilité d'intrusion ==> tu peux avoir très mal.

Citation:
Envoyé par psychoBob
J'ignore ce qu'est ce poka-yoké.
Je t'ai donné tous les mots clefs pour trouver de quoi il s'agit, soit ici soit ailleurs.


Pour terminer, je rappelle que ce sujet a été traité je ne sais combien de fois et qu'il y a plusieurs pages de réponses très intéressantes dans le sujet sur la sécurité.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui 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 11h50.


 
 
 
 
Partenaires

Hébergement Web