2009-12-22 90 views
3

我正在開發一個Web應用程序,其中UserId和RoleId起着至關重要的作用......將這些值存儲在session中是否安全。其他可以是hiddenfield,cookie ..哪個更安全?在會話中存儲值是否安全?

這個任何建議...

+0

我們在會話狀態下存儲用戶ID和角色分配,這很好。即使這些值被破壞,它們也不會提供認證細節或類似的東西。例如。密碼和敏感用戶detials絕對不會存儲在會話變量中。會話變量更加安全,但通常情況下,Web服務器位於DMZ中,這是一個不太安全(更加暴露)的環境。 HTH :) – Russell

+0

好問題,可以通過存儲數據(如分配給當前用戶的角色而不必檢查數據庫等)(特別是在n層體系結構中)來獲得某些性能收益。 – Russell

回答

7

會話比Cookie和隱藏字段更安全,因爲它們保留在服務器上。由於用戶可以直接訪問它們,因此Cookie通常不應包含敏感數據,甚至是加密的數據。隱藏的字段也發送給客戶端,但不顯示。因此,使用FireBug等工具,您可以輕鬆顯示此內容。

有很多地方可以存儲會話,比如在內存中(如果你不使用它們)或者讓SQL服務器維護它們。您可以在會話here上獲得更多信息。會話是安全的,因爲它們存儲在服務器端。

+0

你可以通過斷點調試Web服務器上的會話變量(例如通過Visual Studio),我認爲它比Firebug容易。 – Russell

+0

我假設最終用戶的觀點。他們可以使用FireBug來顯示頁面上的任何隱藏字段/ cookie。 – keyboardP

4

Session變量比cookie更安全,因爲他們是你的服務器,而不是在用戶的計算機上。雖然會話並不完美 - 通過竊取會話密鑰,他們可以是hijacked。儘管如此,與僅僅使用保存在計算機中的cookie相比,這樣做更加困難。

+0

不錯,但是數據包嗅探可以很容易地識別會話密鑰。 – Russell

+0

(上面的意思是同意你的意思,忽略「但是」:P) – Russell

0

會話絕對比隱藏字段或cookie更安全。

不同之處在於SESSION值存儲在SERVER中,隱藏字段和cookie存儲在客戶端。

0

會話將比cookie更安全(會話存儲在服務器的內存中,cookie傳送到客戶端)。

1

當我需要在會話中存儲「易受攻擊」數據時,我會在存儲之前加密數據。加密選項是動態創建的,並不存儲在任何地方,因此如果會話ID被泄露,黑客無法解密數據。有一個性能開銷,所以我只存儲需要安全的值。

相關問題