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 10/05/2006, 20h43   #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é] IP dans la session contre le vol (de session): mettons les choses au point

Bonjour,

Je viens d'ouvrir deux posts parfaitement infructueux, concernant la bonne méthode pour empecher un pirate de voler une session :
http://www.developpez.net/forums/sho...d.php?t=144325
http://www.developpez.net/forums/sho...d.php?t=137518

Comme il s'avère qu'en bout de course j'ai compris que dalle, je me dis que le plus simple serait de le faire avec les IP :
Je chope l'IP de celui qui s'identifie et je compare au fil des pages avec l'IP du visiteur. Comme normalement ce sont les mêmes tout va bien, mais si un pirate a volé la session, comme il a une IP différente, il est marron, ou pour mieux dire déconnecté.
C'est la méthode recommandé dans le tutoriel de Développez sur les sessions, ainsi que sur d'autres tutoriel du web.
Parait-il c'est aussi la méthode des forums phpBB (et peut être d'autres).

Mais il s'avère que des vétérans ont signalé que les gens qui se connectent notamment par AOL changent d'IP plusieurs fois par connexions, car ils sont derrière des proxys (Ce qui tendrait à signifier que les forums phpBB sont inaccessibles aux utilisateurs d'AOL).
Et il peut y avoir divers connectés avec la même IP aussi, toujours dans le cas des proxys.


Alors quand est-il ? Cette méthode reste-t'elle valable ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 21h00   #2
Membre actif
 
Avatar de renaudjuif
 
Inscription : avril 2006
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 300
Points : 174
Points : 174
Ca ne peut pas marcher si le "voleur" de session passe par le même proxy que le "volé".
Mais l'identification par ip réduit quand même sérieusement les risques, il me semble.
Quant à AOL, la meilleure solution n'est-elle pas de changer de FAI ?
renaudjuif est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 21h01   #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
Alors les gens qui ont un forum phpBB, ou ceux qui adoptent cette méthode, font fi des utilisateurs d'AOL ?
Je me vois mal dire à mes visiteurs "pour utiliser ce site, veuillez changer de FAI".

(Rq...Avec en dessous une pub pour un autre fournisseur d'accès... )

Code :
1
2
3
 
Mais l'identification par ip réduit quand 
même sérieusement les risques, il me semble
Est-ce que la plupart des sites, même sérieux, qui sécurisent leurs sessions, utilisent cette méthode ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 21h21   #4
Membre actif
 
Avatar de renaudjuif
 
Inscription : avril 2006
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 300
Points : 174
Points : 174
C'est vrai, et je suis justement en train de mettre en place un forum phpBB pour un site "grand public"... et en fait je ne savais pas qu'elle faisait une vérification par ip.

Il doit y avoir moyen dans le code de retirer la vérif des ip ?
il y a un fichier common.php ou l'ip client est récupérée...

à voir.
renaudjuif est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 21h41   #5
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
C'est facile de voler une session ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 00h32   #6
Membre actif
 
Avatar de renaudjuif
 
Inscription : avril 2006
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 300
Points : 174
Points : 174
Ca ne parait pas trop difficile avec des sniffers genre ethereal, mais je ne suis pas un expert là-dedans...Je sais que c'est faisable, donc je protège les accès dans mes scripts en conséquence...

il y a 1 un post intéressant (mais 14 pages !) : http://www.developpez.net/forums/d12254/php/langage/sessions/securite-securite-totale-espace-membre/
renaudjuif est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 01h30   #7
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Oui oui, j'ai lu ce post .

Perso, je viens de mettre en place le système de controle sur IP pour mes sessions, parce que tous les tutos en parlent sans parler d'aol, même si effectivement ça doit poser problèmes pour eux.

Quand tu dis "donc je protège les accès dans mes scripts en conséquence...", justement tu fais quoi ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 01h51   #8
Membre actif
 
Avatar de renaudjuif
 
Inscription : avril 2006
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 300
Points : 174
Points : 174
Là je parle des vols de sessions, donc je fais les vérifs d'ip... en négligeant les utilisateurs d'AOL, c'est vrai...
Pour les trucs plus "grand public", genre forum, je ne fais pas ces vérifs d'ip (et je vais voir dans le code de phpBB pour le désactiver).
Les données ne sont pas vraiment "sensibles" et je me dis que au pire certains posts envoyés ne viendront pas du propriétaire du compte... Les risques de dégats sont plutôt limités.
Donc le niveau de sécurité est à adapter au type de site qu'on fait, non ?
Et dans un environnement plus "professionnel", qui demande une sécurité accrue, personne n'utilise AOL...
renaudjuif est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 08h26   #9
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
ça me semble être la chose à faire, malheureusement.

Citation:
Là je parle des vols de sessions, donc je fais les vérifs d'ip... en négligeant les utilisateurs d'AOL, c'est vrai...
...
Pour les trucs plus "grand public", genre forum, je ne fais pas ces vérifs d'ip (et je vais voir dans le code de phpBB pour le désactiver).
...
Et dans un environnement plus "professionnel", qui demande une sécurité accrue, personne n'utilise AOL...
Et bien par exemple, tu fais les vérifs d'ip pour quel genre de site, toi, si ce n'est pas indiscret ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 09h05   #10
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
sous phpBB, le changement d'IP d'un utilisateur (par exemple sous AOL) peut etre rendu transparent par le cookie permettant la connexion automatique du user.
En gros, un utilisateur d'AOL, sans le savoir, sur un forum phpBB (ou autre) peut réaliser autant de connexion que de page qu'il visite
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 09h16   #11
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
J'ai pas tout compris là...

Bon, mesurons les risques. Le gars s'amuse à snifer les trous de mon site, il adore ça et hop en bonus, il récupère une boulette contenant l'id d'un membre.

Il va en faire quoi ? Poster pendant que le membre est connecté, mais après ? Je ne fais circuler ni mail ni mot de passe dans la session.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 09h59   #12
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
Citation:
il récupère une boulette contenant l'id d'un membre.
grosse boulette
Pour peu qu'il y ai une faille style passage de l'id dans l'url et c'est jackpot.
J'avais réussis à hacker un petit jeu en ligne comme ça.
Le gars, pour les interaction avec les autres joueurs, foutait les IDs des jouteurs partout.
Pour augmenter un peu son perso, il offrait des plus par allopass. Lorsque la page allopass avait fait son effet, il redirigeait sur l'index.php en précisant dans l'URL l'ID du membre.
Et hop, un script qui scannait les pages de combat, je remplissait des tables d'ID et j'avais juste à piocher dedans et à appeler la page d'allopass pour me rediriger
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 10h04   #13
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Psycho, la sécurité a un prix. Si tu veux de la sécurité, utilise SSL...
Tout en sachant que le risque zero n'existe pas. La meilleure des sécurités vis à vis d'Internet est de ne pas utiliser Internet.
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 10h15   #14
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Citation:
Envoyé par wamania
grosse boulette
Pour peu qu'il y ai une faille style passage de l'id dans l'url et c'est jackpot.
J'avais réussis à hacker un petit jeu en ligne comme ça.
Le gars, pour les interaction avec les autres joueurs, foutait les IDs des jouteurs partout.
Pour augmenter un peu son perso, il offrait des plus par allopass. Lorsque la page allopass avait fait son effet, il redirigeait sur l'index.php en précisant dans l'URL l'ID du membre.
Et hop, un script qui scannait les pages de combat, je remplissait des tables d'ID et j'avais juste à piocher dedans et à appeler la page d'allopass pour me rediriger
J'ai pas vraiment tout compris. Après l'identification je récupère l'id du membre. Mais pas son pass ou son mail. Ensuite si le gars rempli un formulaire du forum, l'id est récupérée en hidden (filtrée avant l'insertion dans les requêtes), et les pages s'affichent en fonction de cette id.
Bon mais il va en faire quoi le pirate ? s'amuser à poster à la place du membre ? Et ensuite, lorsque celui-ci est déconnecté, de toute façon le pirate n'a qu'a se brosser pour resniffer puisque l'id ne lui sert à rien, à moins d'être insérrer dans une session.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 10h18   #15
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Citation:
Envoyé par Mr N.
Psycho, la sécurité a un prix. Si tu veux de la sécurité, utilise SSL...
Tout en sachant que le risque zero n'existe pas. La meilleure des sécurités vis à vis d'Internet est de ne pas utiliser Internet.
Je suis bien d'accord avec un toi, mais un forum en SSL, je n'en ai jamais vu...


Bon :

- Controle sur IP : nul.
- Controle sur numéro de session ou md5() : rien compris ou semble nul.
- SSL : pas pour un forum.
- Sessions_regenerate_id : je viens d'ouvrir un autre poste dessus, et est-ce vraiment utile ?
- Autres solutions : si vous en avez...
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 10h23   #16
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Citation:
Envoyé par psychoBob
Je suis bien d'accord avec un toi, mais un forum en SSL, je n'en ai jamais vu...
C'est pas parce que tu n'en a jamais vu que ça n'existe pas
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 10h24   #17
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Bon et ici concrètement, sur Développez, ils font comment ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 11h55   #18
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
Citation:
Bon mais il va en faire quoi le pirate ? s'amuser à poster à la place du membre ? Et ensuite, lorsque celui-ci est déconnecté, de toute façon le pirate n'a qu'a se brosser pour resniffer puisque l'id ne lui sert à rien, à moins d'être insérrer dans une session.
ne pas confondre l'id du user et l'id de la session
L'id de session est temporaire, l'id du user non.
C'est pq il ne faut jamais faire apparaitre un id de user dans ses pages, adresses, cookies....

Citation:
Controle sur IP : nul.
- Controle sur numéro de session ou md5() : rien compris ou semble nul.
- SSL : pas pour un forum.
- Sessions_regenerate_id : je viens d'ouvrir un autre poste dessus, et est-ce vraiment utile ?
- Autres solutions : si vous en avez...
Controle sur IP : nécessaire mais non suffisant
- Controle sur numéro de session ou md5() : je suppose que tu parle de ce que j'ai essayé d'expliquer sur le topic "sécurité totale". Visiblement, t'as n'a pas du tout comprendre, mais en gros, comme au dessus, nécessaire mais pas suffisant
- SSL : pour tout ce qui le necessite
- Sessions_regenerate_id : oui, dans les cas appropriés (changement de droit d'un user)
- Autres solutions : si vous en avez...
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 12h40   #19
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
1)
Citation:
ne pas confondre l'id du user et l'id de la session
L'id de session est temporaire, l'id du user non.
C'est pq il ne faut jamais faire apparaitre un id de user dans ses pages, adresses, cookies....
Bon alors, comment je fais pour afficher les pages en fonction de l'utilisateur. Je savais déjà qu'il ne fallait pas passer le password dans la session, maintenant il ne faut pas non plus passer l'id du membre car il reste fixe (alors qu'il ne permet pas de s'identifier, mais bon...).
Alors on fait quoi ? On génère un numéro aléatoire avec md5() lors de l'identification, et on récupère les infos du membre en fonction de son md5() dans les pages qui le nécessite ?
Et si deux membres se retrouvent par hasard avec le même md5() ?

2) J'ai fait cela pour régénérer mes sessions :
Code :
1
2
3
 
session_start();
session_regenerate_id();
Mais on me dit "c'est vraiment mieux contre le vol de session, mais à condition d'effacer l'ancien fichier de session".
Mais comment je fais ??
J'ai essayé :
Code :
1
2
3
4
 
session_start();
session_unset();
session_regenerate_id();
Bien sur c'est nul, ça déconnecte.

**edit** Et si j'utilise session_encode() pour passer l'id du membre dans les variables de session ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 14h07   #20
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
Citation:
Alors on fait quoi ? On génère un numéro aléatoire avec md5() lors de l'identification, et on récupère les infos du membre en fonction de son md5() dans les pages qui le nécessite ?
je fais comme ça oui
avec en plus un id (aussi en md5) que je change à chaque appelle de page.

Citation:
Et si deux membres se retrouvent par hasard avec le même md5() ?
Au vu du temps d'une session, des paramètres aléatoire et unique (temps, ip, rand..) qu'il est possible de passer, faut vraiment etre un poissard pour avoir 2 id de session identiques au meme moment.

Citation:
Mais on me dit "c'est vraiment mieux contre le vol de session, mais à condition d'effacer l'ancien fichier de session".
a mon avis perso, c'est PHP qui gère ça
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania 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 23h17.


 
 
 
 
Partenaires

Hébergement Web