對 Web 開發者而言,效能與安全如雙刃劍懸頂。Web 應用直面用戶,攻擊面極廣。本文以 ASP.NET + Visual Studio 為例,系統梳理主流威脅與實戰對策。
未授權修改/刪除資源(如網頁被掛馬、主頁被改)。核心防線:OS 級 ACL 鎖定檔案/目錄、最小權限原則運行應用程式。
偽造用戶/進程身份(盜用憑證、竄改 Cookie 冒充合法用戶)。對策:嚴格身份驗證機制,驗證「聲稱身份」與「真實身份」一致性。
故意耗盡資源導致服務不可用(如洪水請求佔滿頻寬)。緩解:限制請求頻率、封鎖惡意 IP、負載均衡與自動擴容。
特權提升、資訊洩露、抵賴行為……設計安全 Web 應用,系統工程,非單點技術可解。
| 資源路徑 | 訪問權限 | 理由 |
|---|---|---|
| 全域組件快取 (GAC) | 唯讀 | 僅載入組件,無需寫入 |
| 應用程式目錄 | 唯讀 | 靜態內容不應被修改 |
| 系統框架目錄 | 唯讀 | 框架檔案不可變更 |
| Temp 目錄 (Web 服務支援) | 讀寫刪除 | 唯一需要刪除權限的目錄 |
將「不需要寫入」的目錄鎖定為唯讀,從根源消除篡改風險。
腳本注入是篡改、欺騙的前置條件。雙層防禦:
HttpUtility.HtmlEncode 編碼後再輸出<script>alert(1)</script>,頁面顯示也只是原文代碼示例:
// 輸出前編碼
Response.Write(HttpUtility.HtmlEncode(userInput));
// 或 ASP.NET 頁面內聯
<%: userInput %> <!-- ASP.NET 4 新語法,自動 HtmlEncode -->
這如同拔除炸彈引信:惡意代碼雖在,已失殺傷力。
安全非功能,而是贯穿全生命週期的工程紀律:最小權限縮小攻擊面,雙重驗證/編碼斷開注入鏈,纏深配置 ACL 鎖死資源。Visual Studio 提供工具,踐行在開發者。