Cookie 是伺服器寫入客戶端硬碟或記憶體的小型文字檔(約 4KB),用於記錄使用者 ID、瀏覽歷程、停留時間等資訊。下次造訪時瀏覽器自動送回,伺服器透過讀取 Cookie 識別使用者,實現免登入、個人化顯示等功能。
HttpCookie cookie = new HttpCookie("id", "234");
Response.Cookies.Add(cookie);
// 相當於寫入鍵值對 id:234
HttpCookie cookie = new HttpCookie("id", "234");
Response.Cookies.Add(cookie);
Response.Write(Request.Cookies["id"].Value);
// 輸出:234
風險提示:明文可讀,驗證 Cookie 不安全性,勿存放敏感資料。
HttpCookie cookie = new HttpCookie("id", "234");
cookie.Expires = DateTime.Now.AddMonths(5); // 5個月後過期
Response.Cookies.Add(cookie);
過期後瀏覽器自動清除檔案,避免垃圾檔堆積。
HttpCookie cookie = new HttpCookie("id", "234");
cookie.Expires = DateTime.Now.AddMonths(-5); // 設定過去時間強制失效
Response.Cookies.Add(cookie);
<form id="form1" method="post" action="rembPage.aspx">
<div>
帳號:<input type="text" name="userName" /><br />
密碼:<input type="password" name="pass" /><br />
記住我:<input type="checkbox" value="rem" name="sele1" /><br />
<input type="submit" value=" 登入 " />
</div>
</form>
protected void Page_Load(object sender, EventArgs e)
{
// 檢查是否已有 Cookie(第二次造訪)
if (Request.Cookies["userName"] == null && Request.Cookies["passWord"] == null)
{
// 首次登入,驗證表單資料
if (Request.Form["userName"] != null && Request.Form["pass"] != null)
{
string userName = Request.Form["userName"];
string userPassWord = Request.Form["pass"];
if (userName == "admin" && userPassWord == "123") // 實際應查資料庫
{
if (Request.Form["sele1"] != null) // 勾選「記住我」
{
HttpCookie cookieUserName = new HttpCookie("userName", userName);
HttpCookie cookiePassWord = new HttpCookie("passWord", userPassWord);
cookieUserName.Expires = DateTime.Now.AddDays(2); // 2天有效
cookiePassWord.Expires = new DateTime(2012, 5, 27); // 指定日期
Response.Cookies.Add(cookieUserName);
Response.Cookies.Add(cookiePassWord);
}
Response.Redirect("1.aspx"); // 登入成功導向
}
}
}
else
{
// 偵測到 Cookie,直接導向內容頁(免登入)
Response.Redirect("1.aspx");
}
}
cookie.HttpOnly = true; 防止 XSS 攻擊竊取cookie.Secure = true; 僅 HTTPS 傳輸cookie.Domain、cookie.Path 縮小作用範圍JavaScript 操作 Cookie 部分將於後續文章補充。