我的工作,它使用Session變量來跟蹤用戶的應用程序,母版頁上檢查它的存在,否則敲出來登錄。我想改變這個表單身份驗證,因爲我認爲它更安全,數據被加密。是什麼形式的認證來保護,而不是使用會話變量
有人能告訴我什麼數據實際上是加密的嗎?我嘗試在我的網站上設置Forms Authentication,它工作正常,用戶正在被正確地跟蹤,並且不能在沒有登錄的情況下訪問頁面。但是,當我查看Request Body時,使用Fiddler,我看到了所有表單字段,內容。黑客不能使用它來更改數據並重新提交請求,就像使用從Session變量生成的cookie一樣?這個應用程序沒有使用SSL,所以我理解SSL會加密正文,但我認爲這也是Forms身份驗證所要做的。否則它會加密什麼,只是Cookie中的會話ID?
這裏是我使用的代碼:在登錄頁面我試圖手動創建的cookie
<authentication mode="Forms">
<forms loginUrl="default.aspx" name=".ASPXFORMSAUTH_Test" defaultUrl="home.aspx" protection="All"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
txtEmail.Text,
DateTime.Now,
DateTime.Now.AddMinutes(30),
false,
txtEmail.Text,
FormsAuthentication.FormsCookiePath);
// Encrypt the ticket.
string encTicket = FormsAuthentication.Encrypt(ticket);
// Create the cookie.
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
// Redirect back to original URL.
Response.Redirect(FormsAuthentication.GetRedirectUrl(txtEmail.Text, false));
我也試過:
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, false);
獲得相同的結果,Fiddler的請求主體顯示所有提交的字段及其內容。
不是你的問題的答案(我猜cookie值包含一些哈希信息,但不知道。)。無論如何,你不應該手動設置cookie。你應該依賴FormsAuthentication.SetAuthCookie。這裏的一些細節:http://stackoverflow.com/a/15199149/1236044 – jbl 2013-05-14 14:50:20