.NET Framework 安裝時動態發現預設**停用**。機制:*.vsdisco 檔案由 DiscoveryRequestHandler 處理,回傳伺服器上所有 Web Service 清單。啟用步驟:
machine.config,取消註解 <add verb="*" path="*.vsdisco" type="System.Web.Services.Discovery.DiscoveryRequestHandler..." />default.vsdisco 或自訂 .vsdisco 檔(可用 <exclude path="..." /> 排除敏感目錄)警告:若部署伺服器安裝了 Visual Studio .NET,安裝程式會在 Web 根目錄建立 default.vsdisco,**上線前務必刪除**,否則所有 Web Service 將公開可被發現。建議生產機**勿安裝 VS.NET**,僅安裝 .NET Framework 執行環境。
| 模式 | 機制 | 適用場景 | 支援委派 |
|---|---|---|---|
| 匿名 | 無憑證,可用 Cookie 個人化 | 公開內容站台 | 否 |
| 表單 | 自訂登入頁,驗證資料庫 | 會員制網站 | 否 |
| 基本 | IIS 設定,Base64 傳輸,需 SSL 加密 | 簡單內部系統 | 是 |
| Digest | IIS 設定,MD5 雜湊,Win2K+ | 需較安全的內部網路 | 否 |
| 整合 Windows | NTLM/Kerberos,不傳送密碼,僅 IE 支援 | Intranet 域環境 | 是 |
| 憑證 | 客戶端憑證,CA 驗證,成本高 | 高機密系統 | 是 |
| Passport | Microsoft 集中式 SSO | 跨站單一登入 | 否 |
<identity impersonate="true" /> 在 Web.config 中啟用,執行緒以通過驗證的使用者身分存取**本機**資源(檔案、資料庫、登錄)。machine.config 中 <processModel> 設定三種身分:
<!-- 預設:ASPNET 帳戶,Users 群組,最小權限 -->
<processModel userName="machine" password="AutoGenerate" />
<!-- 高風險:SYSTEM,擁有管理員權限 -->
<processModel userName="SYSTEM" password="AutoGenerate" />
<!-- 自訂:指定網域帳戶 -->
<processModel userName="domain\user" password="pwd" />
嚴禁生產環境使用 SYSTEM,一旦遭注入攻擊將導致伺服器全陷。
| 資源 | 限制 | 解決方案 |
|---|---|---|
| 檔案/目錄 | 僅讀/執行權限 | 在 ACL 中為特定檔案/目錄授予 ASPNET 寫入/建立權限,**避免同一目錄同時具寫入+執行** |
| 事件日誌 | 可寫入現有日誌,不可建立新類別 | 部署腳本預建日誌類別,或啟用模擬由高權限帳戶建立 |
| 目錄服務/AD | 無權限 | 模擬+委派,或 DirectoryEntry 傳遞明確憑證(需安全儲存) |
| 效能計數器 | 僅可寫入,不可讀取/建立類別 | 部署腳本預建類別,或模擬建立 |
ReadOnly、ReadWrite、ReadCreate,目錄層級設定 ACLdebug="false"),避免錯誤頁洩露堆疊追蹤Web.config(關閉偵錯、自訂錯誤頁)從設計威脅建模、實作最小權限、測試滲透驗證、部署強化設定,每個環節缺一不可。ASP.NET、作業系統、IIS、瀏覽器提供的多層防護機制,需開發者正確配置、組合使用,方能構建真正安全的應用系統。