IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] IP dans la session contre le vol (de session): mettons les choses au point


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    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 ?
    C'est pas parce que j'ai tort que vous avez raison.

  2. #2
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    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 ?
    C'est curieux chez les marins ce besoin de faire des phrases !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?
    C'est pas parce que j'ai tort que vous avez raison.

  4. #4
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    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.
    C'est curieux chez les marins ce besoin de faire des phrases !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    C'est facile de voler une session ?
    C'est pas parce que j'ai tort que vous avez raison.

  6. #6
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    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/showthread.php?t=12254
    C'est curieux chez les marins ce besoin de faire des phrases !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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 ?
    C'est pas parce que j'ai tort que vous avez raison.

  8. #8
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    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...
    C'est curieux chez les marins ce besoin de faire des phrases !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    ça me semble être la chose à faire, malheureusement.

    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 ?
    C'est pas parce que j'ai tort que vous avez raison.

  10. #10
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    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

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.
    C'est pas parce que j'ai tort que vous avez raison.

  12. #12
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    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

  13. #13
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    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.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.
    C'est pas parce que j'ai tort que vous avez raison.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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...
    C'est pas parce que j'ai tort que vous avez raison.

  16. #16
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    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

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Bon et ici concrètement, sur Développez, ils font comment ?
    C'est pas parce que j'ai tort que vous avez raison.

  18. #18
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    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....

    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

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    1)
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?
    C'est pas parce que j'ai tort que vous avez raison.

  20. #20
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    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.

    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.

    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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/05/2007, 19h35
  2. Réponses: 15
    Dernier message: 11/05/2006, 10h23
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43
  4. Icone dans barre taches napparait pas tjr(lancement session)
    Par souch dans le forum Composants VCL
    Réponses: 4
    Dernier message: 16/06/2004, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo