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

ASP.NET Membership 表效能陷阱:缺少索引導致的類 DoS 攻擊

     編輯:關於ASP.NET

開發環境輕鬆跑的查詢,上線大資料量卻癱瘓伺服器。原因:aspnet_Users、aspnet_Membership、aspnet_Profile 等表的常用查詢欄位(UserName、Email、UserId、IsAnonymous)完全沒有索引,導致全表掃描。

真實案例

行銷部頻繁執行報表查詢,觸發大量 Table Scan,IO 與 CPU 飆升。SQL Profiler 顯示查詢耗時,但 CPU 負載看似正常——因為阻塞發生在 IO 等待。網站變慢、逾時,卻查不出「慢查詢」,因為每條查詢單獨看不算慢,併發量大時系統癱瘓。

IO與CPU飆升圖表

解決之道

  • 為 UserName、Email、UserId、IsAnonymous、ApplicationId 建立非叢集索引
  • 定期重建索引與更新統計資料
  • 報表查詢改用唯讀複本或資料倉儲

預設 Membership 架構未建索引是已知缺陷,上線前務必補上,否則等同留著後門讓合法查詢演變成 DoS 攻擊。

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