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é] Besoin d'eclaircirssement sur les sessions


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 48
    Points : 59
    Points
    59
    Par défaut [Sécurité] Besoin d'eclaircirssement sur les sessions
    Bonjour à tous

    Je bosse en ce moment sur les sessions, j'ai écris ce petit script qui fonctionne

    Je ne vous met que le principal


    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
    code sur le formulaire
     
    ?php
    // démarrage de la session
    session_start();
    // teste si les champs ont bien été remplit
    if (isset($_POST['login']) && $_POST['password'] !=""){
    if($_POST['login']==admin && $_POST['password']==2345)
    {
    $_SESSION['pseudo']=$_POST['login'];
    $_SESSION['password']=$_POST['password'];
    header("location: 2345.php");
    }
    }
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    code de la page 2345
     
    <?php
    // démarrage de la session
    session_start();
    // vérification si les variable de seesion existe
    if (isset($_SESSION['pseudo']) && $_SESSION['password']){
    echo 'vous êtes connecté sour le login : '.$_SESSION['pseudo'];
    }
    else{
    echo 'vous n\'avez pas accés à cette zone';
    }
    ?>
    Ce code fonctionne, mais j'ai l'impression qu'il est incorrect voir imparfait, car il y a certaines zones d'ombre dans ma compréhension du sujet, j'ai lu la faq sur le sujet mais elle n'a pas répondu à mes interrogations

    D'après ce que j'ai compris lorsqu'une session s'ouvre un cookies est stocké sur l'ordinateur client avec l'ID de la session, si je reprends mon site, admetons que le visiteurs refuse les cookies, mon script ne fonctionnera pas?

    J'ai lu qu'il était possible de transmettre cette ID par l'url, il vaut mieux par précaution mettre l'identifiant de session à tous les liens faisant partis des pages protégés?

    Dans le cas le la redirection du script, quelle serait la bonne syntaxe?

    est ce que celle ci est correcte?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header("location: 2345.php?strip_tags(SID)");
    Dernière questions

    A votre avis que faudrait t'il pour que ce script soit plus correcte?

    J'avoue que même si je trouve des informations sur le sujet, j'ai quand même besoin de certaine explications, voilà pourquoi je m'adresse à bien plus expert que moi.

    Je suis persuadé qu'il est important de bien maîtriser les sessions car visiblement les possibilités offertent sont enormes

    Merci à tout ceux qui prendront ma demande en considération

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 165
    Points
    165
    Par défaut
    Citation Envoyé par zave
    D'après ce que j'ai compris lorsqu'une session s'ouvre un cookies est stocké sur l'ordinateur client avec l'ID de la session, si je reprends mon site, admetons que le visiteurs refuse les cookies, mon script ne fonctionnera pas?
    c'est bien ça, php n'aura pas d'id de session donc ne pourra pas retrouvé les donnée (pour chaque session d'entamée php cré un fichier sess_idDeLaSession), mais tu peux aussi vérifier la présence des cookies.

    Citation Envoyé par zave
    J'ai lu qu'il était possible de transmettre cette ID par l'url, il vaut mieux par précaution mettre l'identifiant de session à tous les liens faisant partis des pages protégés?
    c'est effectivement mieux de le mettre là ou tu en as besoin (les actions de tes form aussi) si tu passes par l'url.
    je crois que php le fait tout seul (j'utilise les cookies alors je peux pas trop en dire).
    regarde ici pour les configs (session.use_trans_sid et url_rewriter.tags par exemple) :
    http://fr.php.net/manual/fr/ref.session.php

    Dans le cas le la redirection du script, quelle serait la bonne syntaxe?

    est ce que celle ci est correcte?
    header("location: 2345.php?strip_tags(SID)");
    essaie

    Citation Envoyé par zave
    à votre avis que faudrait t'il pour que ce script soit plus correcte?
    bah, c'est pas un script complet...

    par contre je vois pas l'utilité de mettre le pass dans une session.
    par défaut php stock les fichiers de session dans le répertoire tmp,en gros un répertoire accessible à tous, ce qui est souvent le cas dans un mutualisé (tu peux modifier grâce à cette directive : session.save_path).

    pour info le contenu d'un fichier de session
    Citation Envoyé par sess_sid
    login|s:7:"mon log";password|s:8:"mon pass";
    après tu peux aussi regénérer l'id de session pour éviter une fixation de session (tjs utile après un changement de pouvoir, et en plus ça mange pas de pain) :
    http://fr.php.net/session_regenerate_id

    +

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 48
    Points : 59
    Points
    59
    Par défaut
    Merci tout d'abord tthierry, pour ton aide

    Citation Envoyé par tthierry
    c'est effectivement mieux de le mettre là ou tu en as besoin (les actions de tes form aussi) si tu passes par l'url.
    je crois que php le fait tout seul (j'utilise les cookies alors je peux pas trop en dire).
    J'ai regardé du coté de mon hébergeur, visiblement php a été compilé avec l'option --enable-trans-sid, doncs si j'ai bien compris l'ID de la session sera transmise automatiquement dans l'url

    J'ai vu que j'ai un répertoire session, donc visiblement c'est une bonne chose, ça va me permettre d'examiner ces fichiers et surement de comprendre un peu plus peut être

    Citation Envoyé par tthierry
    Citation:

    Dans le cas le la redirection du script, quelle serait la bonne syntaxe?

    est ce que celle ci est correcte?
    header("location: 2345.php?strip_tags(SID)");

    essaie
    C'est vrai que j'aurai pu essayé , je viens donc de le faire en local, surtout que l'option --enable-trans-sid n'y est pas activée et évidémment ça ne fonctionnne pas (je m'en doutais un peu à vrai dire )

    En fait j'ai pas trouvé la syntaxe précise, du coups je m'étais "inspiré" de cette page

    http://fr.php.net/manual/fr/ref.session.php

    car j'avais trouvé ça

    Pour continuer, <a href="nextpage.php?<?php echo strip_tags(SID); ?>">cliquez ici</a>.
    Malheureusement, j'ai pas trouvé d'autres infos me permettant de trouver la bonne syntaxe pour véhiculer l'ID de la session pour la redirection

    Même si ce n'est visiblement plus utile vu que sur mon hébergement c'est automatique. Il faudrait que je connaisse la bonne syntaxe

    Citation Envoyé par tthierry
    après tu peux aussi regénérer l'id de session pour éviter une fixation de session (tjs utile après un changement de pouvoir, et en plus ça mange pas de pain) :
    Ok merci du conseil, j'ai lu le lien et j'ai compris l'intérêt, je me demandais si il fallait regénérer la session sur chaque page d'un espace membre, enfin comment utiliser cette régénération de façon optimale?

    Ma question est peut être un peu bète, mais vu je me la pose, je vous la pose

    Merci pour les eclaircissement en tout cas

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 165
    Points
    165
    Par défaut
    Citation Envoyé par zave
    visiblement php a été compilé avec l'option --enable-trans-sid, doncs si j'ai bien compris l'ID de la session sera transmise automatiquement dans l'url
    seulement si tu as la bonne config dans le php.ini, les options de compilation servent juste à activer ou désactiver des fonctionnalités.
    ce sont les directives du php.ini, modifiables avec ini_set() ou php_value (.htaccess) si impossible d'accéder au fichier ini, qui contrôlent le comportement de php...bon allez j'arrête de chipoter

    Citation Envoyé par zave
    En fait j'ai pas trouvé la syntaxe précise
    ici t'as dû voir qu'ils en savent plus que moi :

    http://www.developpez.net/forums/viewtopic.php?t=472279

    Citation Envoyé par zave
    je me demandais si il fallait regénérer la session sur chaque page d'un espace membre, enfin comment utiliser cette régénération de façon optimale?
    pas forcément, c'est surtout à chaque modification du niveau de pouvoir que c'est important.

    sur les fixations (mais tu verras qu'il y a d'autres manips avec les sessions) :

    http://phpsec.org/projects/guide/fr/4.html
    http://shiflett.org/articles/security-corner-feb2004

    sur l'ajout d'un paramètre optionnel à session_regenerate_id() depuis la v 5.1 :
    http://ilia.ws/archives/47-session_regenerate_id-Improvement.html

    +

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 48
    Points : 59
    Points
    59
    Par défaut
    Merci tthierry pour toutes ces précisions, tout ça commence à devenir plus clair

    Les liens que tu m'as passé concernant les problèmes de sécurité au niveau des sessions sont très intéréssant, je ne connaissais pas les risques éventuelles

    Je ne savais pas non plus que l'on pouvait modifier certains paramètres de php.ini pendant l'exécution d'un script, sympa de me l'avoir fait découvrir. N'ayant pas accès à php.ini c'est bien de savoir ça

    Mon hébergement actuel met l'identifiant de session automatiquement dans l'url, si je change d'hébergeur un jour, je ferai attention à ça, ainsi qu'a la possibilité d'accéder directement à php.ini
    Citation Envoyé par tthierry
    ici t'as dû voir qu'ils en savent plus que moi :

    http://www.developpez.net/forums/viewtopic.php?t=472279


    Tu en sais déjà plus que moi en tout cas

    Visiblement je suis pas le seul à me demander comment faire, je vais donc suivre la suite de ce post avec intérèt car pour l'instant c'est pas très clair pour moi

    encore une fois merci pour ton aide 8)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sécurité] Une question sur les sessions PHP
    Par DaRiaN dans le forum Langage
    Réponses: 2
    Dernier message: 06/07/2006, 09h36
  2. [Sécurité] Question sur les sessions
    Par Seth77 dans le forum Langage
    Réponses: 20
    Dernier message: 25/01/2006, 12h34
  3. besoin d'aide sur les ORB
    Par floorfille dans le forum CORBA
    Réponses: 4
    Dernier message: 24/08/2004, 15h43
  4. Filemaker ... besoin d'aide sur les Plugin
    Par joange dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 22/04/2004, 10h16
  5. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19

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