首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET Forms Authentication Cookie 安全性實測與分析

     編輯:關於ASP.NET

實測 ASP.NET Forms Authentication 產生的 Cookie 是否綁定電腦特徵、能否跨電腦偽造、單一用戶是否對應固定 Cookie 值。

實驗環境設定

Web.config 設定 Forms 驗證,憑證儲存在設定檔:

<authentication mode="forms">
  <forms name="mylab" loginUrl="/login.aspx">
    <credentials passwordFormat="Clear">
      <user name="fancyray" password="fancyray" />
    </credentials>
  </forms>
</authentication>
<authorization> <deny users="?" /> </authorization>

登入頁面驗證碼:

if (FormsAuthentication.Authenticate(txtUser.Text, txtPass.Text)) {
    FormsAuthentication.RedirectFromLoginPage(txtUser.Text, true);
}

Cookie 竊取與重放測試

使用 IEHttpHeaders 觀察驗證後 Cookie:

mylab=3ff83247c29eb5d14d61f389d453eee0586b94e27609c321b017be7b88d1a94d249996428a7a18f5c2d69f3c4dd2b88c00172cafb0b4b4ed8784db62d1d61bcc0c786b4ea7868fc6

在另一台電腦 login.aspx 注入此 Cookie:

<script>
document.cookie = "mylab=3ff83247c29eb5d14d61f389d453eee0586b94e27609c321b017be7b88d1a94d249996428a7a18f5c2d69f3c4dd2b88c00172cafb0b4b4ed8784db62d1d61bcc0c786b4ea7868fc6";
</script>

測試結果與安全性啟示

  • Cookie 不綁定電腦特徵,跨電腦重放成功
  • 同一用戶每次登入產生不同 Cookie 值(含加密票據與時間戳)
  • 若攻擊者竊取 Cookie(XSS/中間人),可直接重放偽造身分
  • 防護建議:啟用 HTTPS (Secure)、HttpOnly、縮短 Timeout、定期重新驗證、考慮綁定 IP/User-Agent

來源討論:CSDN 社群

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved