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

程式碼閱讀總結:ASP.NET StartKit TimeTracker - 角色權限 Bug 實錄

     編輯:關於ASP.NET

TimeTracker 專案因設計疏失存在越權漏洞:Consultant 角色可存取 Administrator 專屬頁面 ProjectList.aspx。

重現步驟

  1. 以 Administrator (ai_ai@126.com) 登入,建立 Consultant (ai_c@126.com)
  2. 直接關閉瀏覽器 (非點選登出)
  3. 重新開啟瀏覽器,以 Consultant 登入
  4. 即可存取 /ProjectList.aspx?index=2

根因分析

  • 角色資訊加密儲存於 Cookie (userroles),使用 FormsAuthentication.Encrypt
  • Global.asax 的 Application_AuthenticateRequest 中重寫 Cookie 值,且 有效期僅 1 分鐘
  • 兩帳戶共用同一 Cookie 名稱,第二次登入未清除舊 Cookie,導致讀取到前一使用者角色
Response.Cookies[UserRoles].Value = cookieStr;
Response.Cookies[UserRoles].Path = "/";
Response.Cookies[UserRoles].Expires = DateTime.Now.AddMinutes(1);

修正建議

  • 登入時明確清除舊角色 Cookie
  • Cookie 名稱區分用戶或攜帶用戶標識
  • 縮短或移除固定 1 分鐘滑動過期機制
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved