2010-10-19 7 views
3

j'ai 2 serveurs en cours d'exécution, un pour le contenu dynamique (nginx, php) et un autre pour la connexion (apache2, php)php crypté des données de session ssl

j'utiliser memcache pour partager les informations de session

i mis à jour le logiciel du serveur et depuis lors, les données de session dans apache est crypté

apache:
séance :: write ("sessions/s53mqdhghmlrvnvjt05novt4m2", "données cryptées", 0,1440)

nginx:
séance :: write ("sessions/s53mqdhghmlrvnvjt05novt4m2", "test | i: 1;", 0,1440)

sur les deux serveurs de la session-id sont les mêmes, et le cookie séance encore passe le sessionId de telle sorte que tout fonctionne encore comme il devrait

les deux serveurs utilisent exactement la même php.ini

je regardais dans le conf ssl, mais je ne pourrais pas trouver tout ce qui fixerait les données de session à chiffrer

quelqu'un sait où je peux arrêter la session données d'être cryptées sur apache/mod_ssl

modifier:
Eh bien, je l'ai trouvé un sollution de travail, mais je l'ai trouvé encore havnt le origion du problème je sais que les données de session doit quitter le processus php être chiffré par mod_ssl et le gestionnaire d'enregistrement de session est appelé lors des opérations de nettoyage par php après la fin du script.
Mais il n'y a rien de ce comportement documenté dans les docs.

la sollution est, pour l'instant, de ne pas enregistrer les données fournies par php lors de la session :: écrire, mais plutôt d'utiliser la session_encode() pour générer le hachage de la session à nouveau et enregistrer que

pour ceux d'entre vous lire ceci qui sait comment et pourquoi je voudrais vraiment savoir désactiver la directive qui crypte les données.

+0

Encrypted comment exactement? –

+0

avec le cryptage ssl de mod_ssl, c'est pourquoi je n'ai pas inclus les données cryptées –

Répondre

0

Les données de session sont stockées sur le serveur et non dans le cookie de session. Si vous lisez le cookie, vous verrez que c'est juste une chaîne de caractères qui contient un ID. Par défaut (et simplement mis), PHP stocke les données de session en sérialisant le tableau $ _SESSION et en l'écrivant dans un fichier. Je ne suis pas vraiment sûr que ce que vous essayez de faire est de partager des informations de session dans différents environnements. Puisque vous avez mentionné memcached, il suffit de réécrire les fonctions de gestion de session pour lire et écrire dans/depuis memcached. Puisque vous contrôlerez comment les données sont stockées, vous pouvez stocker les données cryptées ou non. Voici référence sur la session handeling funcitons:

http://us3.php.net/manual/en/book.session.php

+0

J'ai surpassé la gestion de session en php et enregistré une classe de session pour cela, cette classe écrit et lit les données dans/d'un cluster memcache, le problème est que les données de session sur write (c'est-à-dire après la fin du processus ou après l'appel de session_write_close) provenant de php sont déjà cryptées. –

3

Si vous avez module suhosin chargé, comme je l'ai fait, il est probablement source de problème. Vous pouvez le désactiver complètement ou désactiver le cryptage de session en définissant suhosin.session.encrypt sur off dans le fichier inos suhosin.

+0

agréable maintenant c'est ce que je cherchais, au moins cela explique. –