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

VB.NET 與 C# 開發者必懂的 .NET 安全性議題(下):Web 應用安全、ASPNET 身分、動態發現與部署防禦

     編輯:關於C語言

Web 應用程式安全三大防線

  1. 禁用動態發現:防止惡意掃描列舉 Web Service
  2. 身分驗證與模擬:確認使用者身分、以使用者權限存取資源
  3. ASPNET 進程身分最小權限:預設低權限帳戶,按需提升特定資源 ACL

動態發現:預設關閉,謹慎啟用

.NET Framework 安裝時動態發現預設**停用**。機制:*.vsdisco 檔案由 DiscoveryRequestHandler 處理,回傳伺服器上所有 Web Service 清單。啟用步驟:

  1. 編輯 machine.config,取消註解 <add verb="*" path="*.vsdisco" type="System.Web.Services.Discovery.DiscoveryRequestHandler..." />
  2. 部署 default.vsdisco 或自訂 .vsdisco 檔(可用 <exclude path="..." /> 排除敏感目錄)

警告:若部署伺服器安裝了 Visual Studio .NET,安裝程式會在 Web 根目錄建立 default.vsdisco,**上線前務必刪除**,否則所有 Web Service 將公開可被發現。建議生產機**勿安裝 VS.NET**,僅安裝 .NET Framework 執行環境。

身分驗證模式完整對照

模式機制適用場景支援委派
匿名無憑證,可用 Cookie 個人化公開內容站台否
表單自訂登入頁,驗證資料庫會員制網站否
基本IIS 設定,Base64 傳輸,需 SSL 加密簡單內部系統是
DigestIIS 設定,MD5 雜湊,Win2K+需較安全的內部網路否
整合 WindowsNTLM/Kerberos,不傳送密碼,僅 IE 支援Intranet 域環境是
憑證客戶端憑證,CA 驗證,成本高高機密系統是
PassportMicrosoft 集中式 SSO跨站單一登入否

模擬與委派

  • 模擬:<identity impersonate="true" /> 在 Web.config 中啟用,執行緒以通過驗證的使用者身分存取**本機**資源(檔案、資料庫、登錄)。
  • 委派:進一步允許以使用者身分存取**遠端**資源(另一台伺服器的 SQL、檔案共享)。需驗證模式支援(基本、整合 Windows、憑證),且需在 Active Directory 設定帳戶「受信任以進行委派」。

ASPNET 進程身分:預設最小權限,按需授權

machine.config 中 <processModel> 設定三種身分:

<!-- 預設:ASPNET 帳戶,Users 群組,最小權限 -->
<processModel userName="machine" password="AutoGenerate" />

<!-- 高風險:SYSTEM,擁有管理員權限 -->
<processModel userName="SYSTEM" password="AutoGenerate" />

<!-- 自訂:指定網域帳戶 -->
<processModel userName="domain\user" password="pwd" />

嚴禁生產環境使用 SYSTEM,一旦遭注入攻擊將導致伺服器全陷。

ASPNET 帳戶常見資源存取解決方案

資源限制解決方案
檔案/目錄僅讀/執行權限在 ACL 中為特定檔案/目錄授予 ASPNET 寫入/建立權限,**避免同一目錄同時具寫入+執行**
事件日誌可寫入現有日誌,不可建立新類別部署腳本預建日誌類別,或啟用模擬由高權限帳戶建立
目錄服務/AD無權限模擬+委派,或 DirectoryEntry 傳遞明確憑證(需安全儲存)
效能計數器僅可寫入,不可讀取/建立類別部署腳本預建類別,或模擬建立

檔案系統 ACL 管理最佳實踐

  • 依權限需求分目錄:ReadOnly、ReadWrite、ReadCreate,目錄層級設定 ACL
  • 部署專案使用自訂動作設定目標機 ACL
  • 記錄每項 ACL 變更理由,供稽核追蹤

開發環境安全機制

  • VS Developers 群組:擁有建立 Web 應用、IIS 設定權限
  • Debuggers 群組:可附加偵錯進程
  • 兩者皆為高權限群組,**嚴格控制成員**

偵錯與部署建議

  1. **僅在測試機偵錯**,生產機僅安裝 Remote Debugging Components,偵錯完成即移除
  2. 部署時使用 **Release 組態**(debug="false"),避免錯誤頁洩露堆疊追蹤
  3. 利用 VS.NET「複製專案」功能,指定部署用 Web.config(關閉偵錯、自訂錯誤頁)
  4. 生產機**不安裝 Visual Studio .NET**

總結:安全是全生命週期的系統工程

從設計威脅建模、實作最小權限、測試滲透驗證、部署強化設定,每個環節缺一不可。ASP.NET、作業系統、IIS、瀏覽器提供的多層防護機制,需開發者正確配置、組合使用,方能構建真正安全的應用系統。

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