1

只是想知道,由於會話ID存儲在cookie客戶端,我可以很容易地修改該cookie並將會話ID值更改爲另一個用戶會話ID的值。允許第一個用戶從第二個用戶獲取數據。 如果會話用於存儲「登錄會話」,用戶可以登錄,就好像它是另一個用戶一樣,那麼容易「破解」的會話也是如此? 我自己試了一下,我可以很容易地導航與另一個用戶會話,也許這隻能工作,因爲兩個會話來自相同的IP和計算機,但ASP MVC引擎提供任何安全檢查,以避免這種情況?ASP MVC會話安全風險

回答

1

您不應該使用會話來存儲「登錄會話」。 .ASPXAUTH cookie用於存儲經過身份驗證的用戶信息,並且使用您設置的機器密鑰或由IIS自動生成的機器密鑰對此cookie進行加密。

如果您擔心會話劫持(取決於您的應用程序,您應該),那麼您應該使用身份驗證Cookie(userId)和會話中的信息的組合以確保值確實匹配。

會話和身份驗證這兩個概念通常會混淆起來,但它們不應該是這樣。一個用戶嚮應用程序標識用戶並確認用戶實際上已經過身份驗證(Forms Auth Ticket/Cookie),另一個只是在Web請求之間存儲數據。

這裏是圍繞Forms Authentication Ticket and Cookie爲.NET

另外,請參閱this Q&A,有點您問題相關的一些信息 - 它可以提供一些更深入的理解是如何工作的,並幫助你實現你所需要的。

+0

我知道我應該使用由asp mvc提供的AuthCookie,但是,在這個應用程序中,我需要模擬「2個會話」,我需要在同一頁面中保留兩個單獨的用戶會話,以他可以登錄其中任何一個,並從一個註銷不會干擾另一個。所以我最終使用框架會話來實現這一點。否則,我想我應該製作我自己的會話餅乾? – user1777914 2013-05-08 23:22:20

+0

這是您在那裏我不完全理解的一些奇怪的需求操作。但是,您可以使用加密的信息發佈自己的cookie,這樣可以使您既安全又實現您想要的內容。 AFAIK,無論如何你都不能從一個客戶那裏進行兩個會話,所以......我的知識將會受到限制。但是,對於您的原始問題,不,會話ID將以純文本形式存儲。 – Tommy 2013-05-08 23:26:20

+0

在最後添加了一些可以幫助你的東西 – Tommy 2013-05-08 23:28:16