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 :

fread et session


Sujet :

Langage PHP

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut fread et session
    Je cherche à lire une image dynamique (résultat d'un script php) sur mon propre serveur dont les scripts sont protégés par authentification ldap (serveur distant).
    Etant authentifié (serveur ldap puis stockage de l'authentification en session), j'observe les comportement suivants :
    1) Quand j'affiche cette image via la balise <img>, pas de problèmes.
    2) Quand je fais un fread() dessus, une nouvelle session est démarrée, donc appel au serveur ldap et échec du fread.

    Comment faire pour que fread() tienne compte de la session déjà active ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    essaie de passer l'id de ta session dans le fread.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    J'ai renvoyé l'url suivante à fopen :
    http://localhost/eclipse/osiris/www/teacher/valuation/graph/format/png/graphDataType/mark/valuationId/0000000009?PHPSESSID=v1fcnsvcaningrb2crkt08h4v6
    Ca ne marche pas : fread crée encore une nouvelle session.

  4. #4
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Normal, le fread est exécuté par le server.

    Essaye avec CURL en passant le cookie du client :

    session_id()
    curl_setopt() => CURLOPT_COOKIE

    J'ai renvoyé l'url suivante à fopen :
    http://localhost/eclipse/osiris/www/...grb2crkt08h4v6
    Ca ne marche pas : fread crée encore une nouvelle session.
    php.net =>

    PHP est capable de faire cela de manière transparente, lorsqu'il est compilé avec l'option --enable-trans-sid. Si vous activez cette option, les URL relatives seront modifiées pour contenir l'identifiant de session automatiquement. Alternativement, vous pouvez utiliser la constante SID, qui est définie, si le client n'a pas envoyé le cookie approprié. SID est soit de la forme session_name=session_id ou une chaîne vide.

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Merci pour ta réponse.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // initialisation de la session
    $ch = curl_init();
    // configuration des options
    curl_setopt($ch, CURLOPT_URL, $graphUrl);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_COOKIE, session_id());
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    // exécution de la session
    $graphBinary = curl_exec($ch);
    // fermeture des ressources
    curl_close($ch);
     
    echo htmlentities($graphBinary);
    Mais j'ai encore une redirection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HTTP/1.1 302 Found Date: Sun, 26 Oct 2008 11:18:15 GMT Server: Apache/2.2.8 (Win32) PHP/5.2.6 X-Powered-By: PHP/5.2.6 Set-Cookie: PHPSESSID=psiodko3148kl3bjufkoaecu14; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: PHPSESSID=g6hfk352lmf84d6s9ko5b0r926; path=/
    Le 1er cookie n'est pas visible sur mon système (mais ce n'est pas celui de ma session en cours) ; le 2eme cookie vient du serveur ldap suite à cette demande d'authentification.

    Comment donc insérer le cookie de ma session en cours ?

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Problèmes : cUrl ne peut pas s'approprier la session d'un user => refus d'Apache qui à raison restreint l'accès de la session au navigateur de l'user. Or cUrl initialise une autre session comme un navigateur virtuel.
    Voici la solution que j'ai trouvée (c'est complexe, mais je n'ai pas trouvé mieux ) :
    Je crée une classe qui gère les sessions cUrl.
    1) A l'instanciation, j'accède par cUrl à un script qui affecte à la session cUrl le contenu de la session de l'user connecté ; ce script est sécurisé par login/mdp inclus dans un fichier hors répertoire web.
    2) Je peux ensuite appeler autant de fois que je veux curl_exec : mon applic croit que c'est l'user connecté (les infos de connexion sont en session).
    3) Dès que j'ai fini avec cUrl, je clos la session cUrl => le cookie cUrl est automatiquement effacé.

    Il ne me semble pas qu'il y ait une faille. En effet, si on attaque directement le script d'initialisation, il faut envoyer le bon login (40 caractères aléatoires) et le bon mot de passe (40 autres caractères aléatoires)... + un grain de sel aléatoire généré à chaque connexion et le tout hasché en md5... ainsi que les bonnes données de l'user...

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

Discussions similaires

  1. [Servlets - JSP] Problème de session
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/11/2011, 09h54
  2. Session avec un fread
    Par xxkirastarothxx dans le forum Langage
    Réponses: 4
    Dernier message: 20/04/2009, 10h20
  3. [XMLRAD] session
    Par jml dans le forum XMLRAD
    Réponses: 4
    Dernier message: 17/12/2002, 09h24
  4. fwrite et fread
    Par bohemianvirtual dans le forum C
    Réponses: 5
    Dernier message: 05/06/2002, 12h24

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