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

ASP.NET 內建安全功能抵禦 Web 攻擊:XSS、SQL 注入、CSRF、Session 劫持防禦清單

     編輯:關於ASP.NET

ASP.NET (特別是 2.0+) 內建多層防禦機制,配合安全編碼習慣可構建強韌應用。本文盤點核心內建功能、常見攻擊向量與對應防禦清單。

核心內建防禦

攻擊類型ASP.NET 內建防禦開發者行動
XSS (跨站腳本) 請求驗證 (validateRequest="true")、輸出編碼 (HttpUtility.HtmlEncode, <%: %>)、AntiXSS Library 永不關閉請求驗證、所有輸出經編碼、使用 <%: %> 取代 <%= %>
SQL 注入 參數化命令 (SqlParameter)、Entity Framework / Dapper ORM 嚴禁字串拼接 SQL、所有輸入走參數、最小權限資料庫帳號
CSRF (跨站請求偽造) ViewStateMac (enableViewStateMac="true")、AntiForgeryToken (@Html.AntiForgeryToken() MVC) 所有 POST 表單加入 AntiForgeryToken、驗證 ValidateAntiForgeryToken
Session 劫持 HttpOnly Cookie (httpOnlyCookies="true")、SSL 強制 (requireSSL="true")、SessionID 重生成 全站 HTTPS、Cookie 設 HttpOnly/Secure/SameSite、登入後重新產生 SessionID
隱藏欄位竄改 ViewState 簽章/加密、ControlState 敏感資料勿放隱藏欄位、改用 Server-Side State (Session/Cache/DB)
一次點擊 X-Frame-Options: DENY、CSP frame-ancestors 'none' 全站啟用反嵌入標頭、敏感操作要求再次驗證

三大安全原則

  1. 不信任任何輸入:QueryString, Form, Cookie, Header, Database 讀出資料皆視為不受信。
  2. 最小權限:資料庫帳號、檔案系統、服務帳號、API 金鑰皆按最小權限授予。
  3. 敏感資料不出網路/不落地明文:密碼雜湊、連線字串加密、傳輸層 TLS 1.2+、日誌脫敏。

配置清單 (web.config)

<system.web>
  <httpRuntime requestValidationMode="4.5" enableVersionHeader="false" />
  <pages validateRequest="true" enableViewStateMac="true" viewStateEncryptionMode="Auto" />
  <httpCookies httpOnlyCookies="true" requireSSL="true" sameSite="Strict" />
  <authentication mode="Forms">
    <forms requireSSL="true" slidingExpiration="true" timeout="20" />
  </authentication>
</system.web>
<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="DENY" />
      <add name="X-Content-Type-Options" value="nosniff" />
      <add name="Strict-Transport-Security" value="max-age=31536000" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

持續防禦

  • 定期掃描 (OWASP ZAP, SonarQube, Fortify)。
  • 依賴套件掃描 (NuGet Audit, Snyk, Dependabot)。
  • 安全代碼審查清單化、CI/CD 門檻化。
  • 事件回應演練、滲透測試週期化。

內建功能是地基,安全編碼是樑柱,持續運維是屋頂——三者缺一不可。

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