Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

ASP.NET 1.1 / 2.0+ 跨站攻擊防護:machine.config / web.config 身分模擬與信任層級配置

編輯:關於伺服器

ASP.NET 應用預設以高權限進程身分運行,一旦遭遇 SQL 注入、檔案上傳、路徑遍歷等漏洞,攻擊者可輕易取得伺服器控制權。透過配置 **身分模擬** 與 **信任層級** 降低進程權限,構建纵深防禦。

ASP.NET 1.1 (Framework v1.1.4322)

編輯 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config:

<location allowOverride="false">
    <identity impersonate="true" userName="" password="" />
</location>
  • allowOverride="false":防止子應用程式覆蓋此設定。
  • impersonate="true":啟用身分模擬,使用匿名用戶 (IUSR) 或驗證後的 Windows 身分執行代碼,而非 ASP.NET 進程帳號 (ASPNET/NETWORK SERVICE)。

ASP.NET 2.0 / 3.5 / 4.x (Framework v2.0.50727+)

編輯 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config (機器層級) 或應用程式根目錄 web.config:

<identity impersonate="true" />

若原檔案無此節點,需在 <system.web> 區塊內新增。

完整信任層級鎖定範例 (機器層級 web.config)

<location allowOverride="false">
  <system.web>
    <securityPolicy>
      <trustLevel name="Full" policyFile="internal" />
      <trustLevel name="High" policyFile="web_hightrust.config" />
      <trustLevel name="Medium" policyFile="web_mediumtrust.config" />
      <trustLevel name="Low" policyFile="web_lowtrust.config" />
      <trustLevel name="Minimal" policyFile="web_minimaltrust.config" />
    </securityPolicy>
    <trust level="Medium" originUrl="" />   <!-- 建議生產環境設 Medium 或 High -->
    <identity impersonate="true" />        <!-- 身分模擬 -->
  </system.web>
</location>
  • trust level="Medium":限制檔案 I/O、註冊表、Socket、反射、非受控代碼等高危操作,大幅降低攻擊面。
  • originUrl="":限制 WebRequest 只能存取同源網址。
  • allowOverride="false":子應用無法降低信任層級 (只能提高),防止惡意覆蓋。

信任層級對照表

層級政策檔案主要限制適用場景
Fullinternal無限制 (預設)受信任內部應用、需完全信任的舊代碼
Highweb_hightrust.config禁止非受控代碼、COM Interop、事件日誌寫入較可信應用
Mediumweb_mediumtrust.config限制檔案存取僅限應用目錄、禁止 Socket/Registry/反射/ODBC/OleDb生產環境推薦
Lowweb_lowtrust.config僅允許讀取應用目錄、禁止寫入、無資料庫存取極度受限環境
Minimalweb_minimaltrust.config僅允許執行代碼、無任何 I/O沙箱/插件系統

配置後必測項目

  1. 資料庫連線:Medium 信任預設禁止 SqlClient,需在 web_mediumtrust.config 加入 <SecurityClass Name="SqlClientPermission" .../> 與 <IPermission class="SqlClientPermission" version="1" Unrestricted="true" />。
  2. 檔案上傳/讀寫:確認應用目錄寫入權限與 FileIOPermission 設定。
  3. 第三方元件:反射、動態編譯、非受控 DLL 呼叫將被阻擋,需逐一評估相容性。

現代替代方案 (ASP.NET Core / .NET 5+)

  • 不再使用 CAS (Code Access Security) 信任層級機制。
  • 採用 **容器化隔離** (Docker/K8s)、**最小基底映像** (Alpine/Distroless)、**非 root 用戶運行**、**Seccomp/AppArmor/SELinux 系統調用過濾**、**網路策略** 限制出站連線。
  • 程式碼層面:輸入驗證、參數化查詢、輸出編碼、CSP、HTTPS、依賴掃描 (SAST/SCA)。

對於仍在運行 ASP.NET Framework 的舊系統,配置 identity impersonate="true" + trust level="Medium" 是低成本、高效果的緩解措施,配合 WAF 與定期滲透測試,可顯著降低跨站攻擊風險。

Copyright © Windows教程網 All Rights Reserved