asp.net 關於SessionId


原文:https://www.cnblogs.com/zhang1999/p/7278020.html

登陸頁面使用Session存儲驗證碼,導致會話產生SessionId,從而導致會話固定,登陸后用來存儲用戶信息的SessionId不變,容易被利用

//強行銷毀當前用戶的所有會話內容,但是只有加載頁面的時候有效,導致登陸后沒有用戶信息
HttpContext.Current.Session.Abandon()
HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""))

改用Cookie存儲

1.Cookie對象

(1).寫入Cookie對象

HttpCookie cookie = new HttpCookie("data"); 注:定義cookie,name屬性為data。

cookie.Values.Add("name","123"); 注:cookie是以鍵值對的方式存儲。

cookie.Expires = DateTime.Now.AddYears(2); 注:過期時間設置為2年,也可以不設置過期時間,如果不設置cookie在瀏覽器關閉是自動清除。

Response.Cookies.Add(cookie); 注:寫入Response對象。

(2).讀取Cookie對象

HttpCookie cookie = Request.Cookies["data"]; 注:獲取name屬性為data的cookie

if(cookies !=null &&Cookies.HasKeys) 注:判斷cookie是否存在

{

string s = cookies["name"]; 注:根據name鍵獲取值

Response.Write(s);

}

2.Session對象

Session的定義和讀取相對比Cookie容易

 

(1).定義Session對象

Session["Itemsession"] = "abc"; 注:Session的值為"abc",Session的類型是object所以可以賦任何類型。

(2).讀取Session對象

string s =(string)Session["Itemsession"] ; 注:讀取時的類型,要和定義時的類型一致。

Response.Write(s);

(3).Session特點

同一台電腦的同一個瀏覽器表示同一次會話,不同的瀏覽器表示不同的會話。

同一台電腦的同一個瀏覽器只能有一個Session。

Session的過期時間是在瀏覽器關閉時自動清除或用戶不進行任何活動20分鍾Session也會自動清除。

3.Cookie和Session的不同點和相同點

(1).相同點

Cookie對象和Session對象作用是在窗體之間傳值。

等等

(2).不同點

Cookie將狀態保存在客戶端,Session將狀態保存在服務器端。

Session相對Cookie,Session的安全性更高。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM