長話短說,我正在開發一個內部報表引擎。它完全基於Web(利用PHP和各種AJAX技術),並通過我們的生產軟件解釋存儲在MySQL數據庫中的數據。它運行在Ubuntu 8.04服務器上,所有員工在該機器上都有一個linux用戶帳戶。我使用pam_auth設置了一個登錄系統,強制用戶使用他們的linux用戶帳戶登錄並確定他們是否屬於相應的組以訪問特定報告。PHP pam_auth和cookies
這部分工作很好,我的問題是使用cookie添加「記住我」功能。我希望用戶有一個30天的cookie,以便爲他們節省一些時間,每次他們的會話過期時都必須登錄。我編寫了代碼中的「記住我」部分,它存儲了這個cookie就好了。我只存儲他們的用戶名和密碼的md5散列。當需要重新驗證它們時,問題就來了。通常情況下,我只需通過將存儲的用戶名與數據庫中該用戶的密碼哈希進行比較來完成此操作。使事情複雜化的是我沒有直接訪問用戶名和密碼散列。它們全部存儲在/ etc/passwd和/ etc/shadow中,並且登錄由PAM模塊處理。 pam_auth需要純文本用戶名和純文本密碼。
看來我的唯一選擇是將密碼存儲爲純文本或者使用可逆加密,但我並不特別喜歡這兩種方法。
這裏有沒有更好的解決方案?
將會話生存期設置爲2592000(30天)會出現任何可能的問題嗎? – DWilliams 2010-01-11 16:32:15
我不知道任何,我不認爲該文檔記錄任何,但我從來沒有嘗試過一個PHP會話很長。 – jlamp 2010-01-15 17:53:03