2013-04-12 32 views
0

我有一個網站有兩個區域。一個是金牌會員,另一個是銀牌會員。我在用戶登錄時創建兩個會話變量;每個區域需要兩個會話變量才能訪問。不同地區的會話安全

黃金:會話的用戶id和會話金

銀:會話的用戶id和會話銀

難道這安全嗎?如果黑客竊取或更改會話 - 銀會話黃金會怎麼樣?然後他們可以訪問不同的區域,不是嗎?

+1

會話數據存儲在服務器上。用戶不能僅僅改變會話數據。請參閱:http://stackoverflow.com/questions/2261716/can-php-sessions-be-manually-edited –

+1

這是一個很好的閱讀http://stackoverflow.com/questions/5121766/can-a-user-alter如果我們在會話中使用sha1,我們將如何查詢數據?php的會話值 –

回答

3

有人不能只是改變一樣可以在PHP創建的會話餅乾。考慮一下,cookie會被傳遞到他們的機器上,會話被存儲在服務器上,並在斷開連接時丟失。您應該確定要清理所有輸入,或者您的會話啓動可以被操縱

+0

如果我還記得我(餅乾)呢? –

+0

@chienpinwang餅乾可以修改。你把它們交給你的用戶,你只需要有後端檢查和平衡 – Nick

0

來自黑客的安全性覆蓋範圍要廣泛得多,而且可能非常棘手。你應該總是假設黑客可以破壞你的代碼並獲得訪問權限。

因此,我會使用數據庫而不是會話來確定用戶權限,而且我不會使用普通會話值,而是使用加密的值。也許你可以做這樣的事情:

$_SESSION['user_level'] = sha1($userId . "session-silver"); 

,然後每次你需要這樣的時間比較合適的哈希值。請記住,通過默默無聞的安全性不是一種安全的方法,因爲黑客可能能夠竊取您的源代碼。

免責聲明:這個建議並不打算是防彈但作爲一種體積小,便於改進當前代碼沒有過於複雜的實現快速

+0

我通常使用會話ID作爲查詢用戶數據的關鍵。 –

+0

使用sha1哈希來查詢用戶數據,並將其與密鑰的sha1進行比較。就如此容易。 –