2010-10-19 50 views
3

我有2個服務器上運行, 一個用於動態內容(nginx的,PHP) ,另一個用於登錄(apache2的,PHP)PHP加密的SSL會話數據

我使用內存緩存共享會話信息

我升級了服務器軟件,自此在apache的會話數據進行加密

阿帕奇:
會議::寫( 「會話/ s53mqdhghmlrvnvjt05novt4m2」, 「加密數據」,0,1440)

nginx的:
會議::寫( 「會話/ s53mqdhghmlrvnvjt05novt4m2」, 「測試|我:1;」,0,1440)

兩個服務器會話ID是相同的,並且會話cookie仍然通過SessionID的,讓所有的工作仍然像它應該

兩個服務器使用相同的php.ini中

我看着在SSL的conf,但我無法找到任何會設置爲加密

會話數據

任何人都知道我可以在哪裏停止會話從數據上的Apache/mod_ssl的加密

編輯:
嗯,我已經找到了工作sollution但我仍然havnt發現問題 的origion我知道會話數據必須離開PHP程序由mod_ssl 加密,會話保存處理程序在腳本結束後由php的清理操作調用。
但在文檔中沒有記錄此行爲。

的sollution是,就目前而言,不被保存在PHP會議提供的數據::寫,而是使用session_encode()再次生成會話散列並保存

對於那些你閱讀這些知道如何以及爲什麼我真的想知道關閉加密數據的指令。

+0

加密如何? – 2010-10-19 15:18:04

+0

與mod_ssl的ssl加密,這就是爲什麼我沒有包含加密數據 – 2010-10-19 15:31:06

回答

0

會話數據存儲在服務器上,而不是存儲在會話cookie中。如果你閱讀了cookie,你會看到它只是一串包含ID的字符。默認情況下(簡單地說),PHP通過序列化$ _SESSION數組並將其寫入文件來存儲會話數據。我不確定你要做的是在不同的環境中共享會話信息。由於您提到了memcached,只需重新編寫會話處理函數即可從memcached讀取/寫入數據。由於您將控制數據的存儲方式,因此您可以存儲或不存儲加密的數據。 下面是關於會話HANDELING funcitons參考:

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

+0

我已覆蓋在php中的會話處理,並註冊了一個會話類,該類寫入和從memcache羣集讀取數據,問題是寫入會話數據(因此在調用session_write_close的過程結束之後或之後調用)來自php的會話數據是_allready_加密的。 – 2010-10-19 15:50:11

3

如果您裝入了Suhosin模塊,像我一樣,這可能是問題的根源。您可以完全禁用它或通過在suhosin ini文件中將suhosin.session.encrypt設置爲off來關閉會話加密。

+0

現在很好,這就是我正在尋找,至少這解釋了它。 – 2010-12-06 12:07:30