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 :

[Cookies] Se fabriquer un cookie , l'enfoncer dans son navigateur et pirater mon site


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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
    Par défaut [Cookies] Se fabriquer un cookie , l'enfoncer dans son navigateur et pirater mon site
    Bonjour,

    Les nouvelles aventures de PsychoBob au pays des cookies de session:

    J'utilise une condition pour l'affichage de certaines pages. Il s'agit de tester si le cookie de session existe, sinon le header renvoit sur la page d'identification.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(!isset( $_COOKIE[ session_name() ] ) )
    {
     die(header('Location:dentification.php'));
    ;}
    Bon, mais ne vaut-il pas mieux faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!isset($_SESSION['pseudoSession']))
    {
     die(header('Location:identification.php'));
    ;}
    Parce qu'à priori le gars va pas pouvoir se créer une variable de session sur le serveur sans être connecté. Par contre il peut peut-être se fabriquer un petit cookie de session, l'insérer dans son navigateur et faire croire à mon site qu'il est connecté.
    J'ai tout compris ?

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    oui, tout compris

    en général : ne jamais faire reposer un point de sécurité d'un site sur cookie.

    Ils peuvent être forgés (faille de sécurité)
    Ils peuvent être désactivée (faille de disfonctionnement)
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre éprouvé
    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
    Par défaut
    Donc la première solution est une passoire alors que la seconde est fiable ?
    Peut-on passer outre la seconde, du reste ?
    Et est-ce la peine de faire plusieurs fois dans la page des test d'existences de variable de session, dès lors qu'un premier test à pour instruction de déclencher le header s'il retourne false ?

    J'ai encore du mal à piger le mécanisme là. Mettons que le gars est chez lui il veut afficher une page à accès réservé sans avoir de compte.
    Il ne peut pas forcer mes formulaires, il ne lui reste qu'à forcer la condition d'existence des sessions, fait par mes scripts ci-dessus.
    Comment il fait ?
    De même, si je fais :
    if(!isset( $_COOKIE[ session_name() ] ) )
    {session_start();}

    Puisque le gars peut se fabriquer un faux cookie, il peut aussi très bien démarrer une session sans être connecté. Et là ? Qu'estce qu'il peut faire ? A priori la session ne comportera pas de variables puisquelles sont créés en cas d'identification seulement.

    ça fait un max de questions mais elles m'intéressent toute autant.Si quelqu'un a le courage de les traiter une par une, ça sera génial, merci.

  4. #4
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    le seul moyen de contourner le second test est le vol de session (ou le piratage du serveur)

    si tu es sûr à 100% que ta variable de session existe (exemple, arrêt prématuré du script en cas de non-existence) alors le test de blocage suffit (celui qui arrette le script) à condition qu'il soit fait avant les autres accès à la variable bien sûr
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  5. #5
    Membre éprouvé
    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
    Par défaut
    En tout, je fais cela en haut de mes pages, dîtes-moi si vous-y voyez une faille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <?php
    //test si le cookie de session a été créé lors de l'authentification
    if( isset( $_COOKIE[ session_name() ] ) )
    {
    //démarrage de la session
        session_start();
       //verification du temps d'activité ou d'inactivité
    if(time()-$_SESSION['dernier_acces']>1200) 
    {
    //si plus de 1200 secondes d'inactivité : on détruit cookie et session
    setcookie(session_name(), '', 1 ); // on détruit le cookie
    //on détruit la session
    $_SESSION = array();
    session_destroy();
    }
    //si le délais n'est pas dépassé, on réinitialise la variable de session 
    au temps actuel.
    else
    {
    $_SESSION['dernier_acces'] = time();
    }
    }//fin du test d'existence de cookie de session
     
    //si la variable pseudoSession initialisée dans le script d'identificiation.php
     n'est pas présente, alors on renvoit à la page identification.php
    if(!isset($_SESSION['pseudoSession']))
    {
     die(header('Location: identification.php'));
    ;}
    ?>
    Qu'est ce que vous en pensez ? Du point de vue de la sécurité j'entend, parce que ça fonctionne bien sinon (à l'exception d'opéra qui connecte et déconnecte sans arrêt mais bon je verrais ça plus tard.

  6. #6
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    pourquoi tu te sers de cookies ?

    les sessions suffisent largement pour ce que tu veux faire, ton test sur les cookies est comme si tu mettais if(1), parce que pour moi les cookies sont des supers passoires.

    Donc voila.

Discussions similaires

  1. Afficher le resultat dans la colonne centrale de mon site
    Par Abou Zar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 06/01/2012, 15h09
  2. Réponses: 24
    Dernier message: 19/05/2010, 15h35
  3. Reporter un menu déroulant dans toutes les pages de mon site
    Par nicofago dans le forum Dreamweaver
    Réponses: 21
    Dernier message: 22/11/2008, 00h49
  4. [Spip] Impossible d'entrer dans l'espace privé de mon site
    Par ulrichnansi dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 25/03/2008, 09h17
  5. [XHTML] Comment mettre du css dans un mail envoyé par mon site?
    Par starr dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 29/12/2006, 07h48

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