ASP 執行身份為 IUSR_<機器名稱>,預設無檔案系統讀寫權限,導致 Scripting.FileSystemObject (FSO) 無法建立/讀寫檔案。單純給予目錄「完全控制」雖能解決功能,卻引入嚴重安全風險(惡意腳本可任意讀寫系統檔)。本文提供最小權限原則下的多層次解決方案。
IUSR_WebApp,設定強式密碼、密碼永不過期、禁止互動登入。IUSR_WebApp。data、uploadfile、uploadface、previewimage)授予該帳戶 「修改」權限(讀寫執行),其餘目錄僅「讀取」。在登錄編輯器修改:
HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID
預設值:{0D43FE01-F093-11CF-8940-00A0C9054228}
修改為:{0D43FE01-F093-11CF-8940-00A0C9054229} (最後一位 +1)
效果:CreateObject("Scripting.FileSystemObject") 將失敗。若需保留特定頁面使用,可在該頁面以 <OBJECT RUNAT=Server SCOPE=Application ID=MyFSO CLSID="{...原始CLSID...}"></OBJECT> 明確實例化,實現白名單控制。
regsvr32 /u c:\windows\system\scrrun.dll
徹底移除 FSO 元件,所有 ASP 應用均無法使用。僅適用純靜態/無檔案操作的舊版站點,現代架構不建議。
IUSR_* 帳戶權限與檔案完整性(Tripwire/OSSEC)遵循「最小權限、纏繞防禦、預設拒絕」原則,即可在保留 FSO 功能的前提下,將攻擊面壓縮至最小。