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

建立安全 ASP.NET Web 應用:威脅模型、脆弱性分類與防禦策略

     編輯:關於ASP.NET

安全非絕對,而是風險管理。本文建立威脅模型概念:脆弱性 → 威脅 → 攻擊 (Exploit),列舉常見 Web 攻擊類型 (XSS、SQL Injection、CSRF、目錄遍歷、DoS)、對應脆弱性與 ASP.NET 內建/程式碼層面防禦措施。

核心概念

  • 脆弱性:系統特性可能被惡用 (如未驗證輸入)。
  • 威脅:利用脆弱性造成危害的潛在行為 (如竊取 Session)。
  • 攻擊:實際執行的利用代碼/手法 (如注入 ``)。

常見攻擊與防禦對照表

攻擊類型脆弱性來源ASP.NET 內建防禦程式碼層面加強
XSS (跨站腳本)輸出未編碼的使用者輸入Request Validation (預設開啟)、HttpUtility.HtmlEncodeRazor 自動編碼、AntiXssEncoder、CSP 標頭
SQL Injection字串拼接 SQL參數化命令 (SqlParameter)、存儲過程ORM/Linq to Sql、Entity Framework、禁止動態 SQL
CSRF (跨站請求偽造)缺乏防偽 Token@Html.AntiForgeryToken()、ValidateAntiForgeryToken 屬性SameSite Cookie、雙重提交 Cookie 模式
目錄遍歷路徑參數未規範化Path.GetFullPath 比對允許根目錄檔案存取白名單、虛擬路徑映射
DoS (阻斷服務)資源耗盡 (大檔上傳、複雜查詢)maxRequestLength、executionTimeout、請求佇列限制速率限制、驗證碼、非同步處理、快取
資訊洩漏錯誤頁面顯示堆疊追蹤customErrors mode="RemoteOnly"生產環境關閉 Trace、統一錯誤頁面、日誌脫敏

ATM 密碼類比:安全是相對的

  • 4 位數密碼,3 次嘗試機會 → 猜中機率 3%。
  • 增加位數、減少嘗試、鎖定帳號 → 風險指數級下降。
  • 結論:安全投入與風險承受度權衡,無 100% 安全。

安全開發生命週期 (SDL) 關鍵點

  1. 需求階段:識別資料敏感度、合規需求 (GDPR、PCI-DSS)。
  2. 設計階段:威脅建模 (STRIDE)、最小權限原則、信任邊界劃分。
  3. 實作階段:安全編碼規範、靜態分析 (SonarQube、Roslyn Analyzers)、Code Review。
  4. 驗證階段:滲透測試、掃描工具 (OWASP ZAP)、相依性檢查 (Snyk、NuGet Audit)。
  5. 發布/維運:WAF 部署、日誌審計、事件響應計畫、定期修補。

ASP.NET 專案安全檢查清單 (部署前)

  • [ ] customErrors mode="RemoteOnly" / detailedErrorsForLocalhost="false"
  • [ ] debug="false"、trace enabled="false"
  • [ ] 連線字串加密 (aspnet_regiis -pef connectionStrings)
  • [ ] machineKey 明確設定、非自動生成
  • [ ] enableViewStateMac="true"、viewStateEncryptionMode="Auto"
  • [ ] forms requireSSL="true"、cookieless="Never"
  • [ ] 靜態檔案不提供目錄瀏覽 (directoryBrowse enabled="false")
  • [ ] 移除預設文件 (default.aspx、iisstart.htm) 避免資訊洩漏
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved