Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Windows Server 系統教學 >> Server 2000

Windows 2000 Server IIS 下 FSO (FileSystemObject) 權限問題解決方案:IUSR 帳戶授權與組件安全替代方案

編輯:Server 2000

ASP 經典應用在 Windows 2000 Server IIS 下使用 Scripting.FileSystemObject (FSO) 讀寫檔案時,常遇到「權限被拒絕」錯誤。原因是 ASP 執行身分為 IUSR_機器名 匿名帳戶,預設無檔案系統寫入權限。本文提供標準授權法與安全替代方案。

原因分析

IIS 匿名存取使用 IUSR_機器名 本機帳戶,該帳戶預設僅有讀取靜態檔案權限,無寫入/建立/刪除檔案權限。

方案一:標準 NTFS 權限授權(最常用)

  1. 資源管理器 → 目標資料夾/磁碟分割區右鍵 → 「內容」→ 「安全性」索引標籤。
  2. 點擊「新增」→ 輸入 IUSR_機器名 → 「檢查名稱」→ 確定。
  3. 授予 「寫入」 或 「修改」 權限(視需求),確定套用。

風險:該資料夾下所有 ASP 腳本均可任意讀寫檔案,若有上傳漏洞/注入漏洞,駭客可植入 Webshell 控制伺服器。

方案二:專用匿名帳戶隔離權限(較安全)

  1. 建立專用本機帳戶 IUSR_DOMAIN(或自訂名稱),設定強密碼、密碼永不過期、不可變更密碼。
  2. IIS 網站屬性 → 「目錄安全性」→ 「匿名存取與驗證控制」→ 編輯 → 匿名帳戶改為 IUSR_DOMAIN。
  3. 用 CACLS 或 GUI 僅授予該帳戶必要資料夾的寫入權限。

方案三:禁用/替換 FSO 組件(極端防禦)

  1. 反註冊 FSO 核心 DLL:
    regsvr32 /u c:\windows\system\scrrun.dll(路徑視系統而定)
  2. 或修改登錄檔 CLSID 使 FSO 實例化失敗:
    HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID 值修改最後一位字元。
  3. ASP 改用 Server.CreateObject 呼叫自訂安全元件(如僅提供特定資料夾讀寫的封裝 DLL)。

方案四:HTML 標籤宣告式元件實例化(替代語法)

<OBJECT ID="MyFSO" CLASSID="CLSID:0D43FE01-F093-11CF-8940-00A0C9054228" RUNAT="Server" SCOPE="Application"></OBJECT>

RUNAT="Server" 表示伺服器端執行,SCOPE 可為 Session/Application/Page。修改 CLSID 可快速啟用/禁用。

最佳實務建議:方案二(專用帳戶隔離)+ 程式碼層面輸入驗證/路徑遍歷防護 + 定期掃描 Webshell + WAF 防護,構建多層防禦。

Copyright © Windows教程網 All Rights Reserved