2014-01-15 52 views
0

我有一個很簡單的問題,我在問,因爲我不確定答案。我正在構建一個有多步註冊表單的應用程序。有7個步驟,每個步驟都在不同的PHP頁面上。客戶進入下一頁後,我也會驗證提交的表單數據。將驗證過的表單數據存儲在PHP的Session超全局列表中是否安全?

我的問題是: 是否安全將所有驗證的(只有驗證的)信息存儲在Session變量中,當他們完成註冊後,我會將這些會話值寫入數據庫。爲此目的使用會話安全嗎?如果不是,該方法如何被利用?

我還提供選項讓人們返回到每個步驟並在錯誤輸入內容時更改值。在這種情況下,我只會更新會話變量。它也安全嗎?

我目前使用session_regenerate_id()來防止會話被竊取。

因此基本上我會安全地將數據存儲在Sessions中,然後將它們插入到數據庫中?與此同時,黑客能否更改會話數據,那麼我將插入到數據庫中的內容與我保存到會話中的內容不一樣?

我希望你能理解我的問題。任何幫助將appriciated!

+1

會議是服務器端存儲系統。如果黑客可以在服務器上編寫隨機文件,那麼您就有更大的問題需要關注。 –

回答

2

是的,它是安全的。會話數據存儲在服務器端,不能被客戶端操縱。客戶端保存的唯一東西是會話密鑰,它允許服務器將客戶端與該客戶端的存儲會話變量進行匹配。只要您在將信息存儲到$_SESSION之前驗證信息,就可以在過程結束時將會話變量轉儲到數據庫中。

這裏是more information on sessions and security。任何關於會話竊取問題的簡單解決方案都是使用SSL。

我還提供選項讓人們返回到每個步驟並在錯誤輸入內容時更改值。在這種情況下,我只會更新會話變量。它也安全嗎?

只要您重新驗證會話變量,您也可以使用此方法。

+1

謝謝你的回答,我現在更冷靜了。 +1的額外資源。 –

0

如果保護會話ID用於會話竊取,然後繼續前進,會話存儲在服務器端的安全變量,每個客戶都有自己的會話,所以如果你一定要保持安全的會話ID,那麼沒有問題