0
我正在使用表單身份驗證實現ASP.NET(C#,MySQL DB)網站。 我注意到身份驗證cookie保存用戶名(在我的情況下 - 該人的電子郵件)。 在閱讀this和其他資源後,我知道即使加密,仍然保留預期值並不安全。 如何將此默認功能更改爲意外值?將默認的Forms身份驗證Cookie令牌從用戶名更改爲意外值
我正在使用表單身份驗證實現ASP.NET(C#,MySQL DB)網站。 我注意到身份驗證cookie保存用戶名(在我的情況下 - 該人的電子郵件)。 在閱讀this和其他資源後,我知道即使加密,仍然保留預期值並不安全。 如何將此默認功能更改爲意外值?將默認的Forms身份驗證Cookie令牌從用戶名更改爲意外值
你可以做這樣的事情
FormsAuthenticationTicket tkt;
string cookiestr;
HttpCookie ck;
tkt = new FormsAuthenticationTicket(1, _user.User_Id.ToString(), DateTime.Now,
DateTime.Now.AddMinutes(60), true, string.Format("{0},{1}", System.DateTime.Now.ToString(), _user.User_Id.ToString()));
cookiestr = FormsAuthentication.Encrypt(tkt);
ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
ck.Path = FormsAuthentication.FormsCookiePath;
Response.Cookies.Add(ck);
我只是增加了用戶ID上的Cookie這確實有助於記錄。
但我在哪裏寫它?我需要在創建/超時時寫入cookie並在任何頁面請求上讀取cookie。這是目前由提供者自動完成的事情。我仍然希望它自動完成。所以不必寫邏輯閱讀和決定用戶是否被認證 – Guy
我認爲你想要一個功能,通過它你可以限制在創建cookie的過程中存儲的數據理想情況下,當用戶登錄到系統並進行身份驗證。這是您應該使用此代碼的時間。現在閱讀一個cookie是一個單獨的事情,你可能想要讀取cookie來獲得一些值,這將是我對reach HTTP請求的想法,你可以檢索cookie並且它必須被解密,以便你可以使用這些值。 – Nikshep
實際上,會員提供商正在自動處理所有這些事情。而不是閱讀cookie並檢查用戶是否已通過身份驗證。我只是簡單地稱爲會員的身份驗證功能。唯一的問題是,成員資格提供者通過電子郵件的用戶名來標識用戶。這個值可以被預測和妥協。我想要標準功能,但將標記本身從用戶名更改爲其他類似會話標識的標記 – Guy