Asp.net
登錄asp.net後如何更改會話ID
我有一個使用表單身份驗證和成員資格的網站。使用者必須啟用 cookie 才能使用該網站。我被要求更改程式碼,以便在使用者登錄後立即更改會話 ID。顯然,這將防止會話固定攻擊(http://en.wikipedia.org/wiki/Session_fixation)。有誰知道我如何在不失去整個會話的情況下更改會話 ID?PHP 有執行此操作的特定方法,但我找不到 .NET 等效項。
這是一篇討論此問題的部落格文章:
ASP.NET 不直接支持重新生成會話 ID 的功能。請參閱此處有關此問題的文件。通過將值設置為空字元串並重定向以便重新生成值,有一種不那麼快速和骯髒的方法。
ASPNET_SessionID
我已經在目前 HTTPContext 中生成新的 ASP.NET 會話中回答了類似的問題。基本上我們必須更改一些 SessionStateModule 內部狀態,以便能夠重新生成會話 ID 而不會失去 Session 中的對象。我使用反射將 _rqId 欄位設置為新 ID,並將 _rqSessionStateNotFound 設置為 true。缺點是我們必須授予應用程序“完全信任”。