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

三種禁用 FileSystemObject 組件方法深度解析:ProGID 重命名、CLSID 修改、組件註銷

編輯:關於伺服器

針對共享主機安全需求,提供三種層級的 FSO 禁用方案,由輕到重。

方法一:註銷組件 (核爆級,全站生效)

regsvr32 /u C:\WINDOWS\SYSTEM\scrrun.dll
  • 優點:徹底、簡單
  • 缺點:所有 ASP 應用均無法使用 FSO,包含合法業務
  • 適用:純靜態站點、極高安全要求環境

方法二:修改 ProGID (程式碼級相容,推薦)

  1. 開啟註冊表編輯器 regedit
  2. 定位 HKEY_CLASSES_ROOT\Scripting.FileSystemObject
  3. 修改預設值 (ProGID):Scripting.FileSystemObject → Scripting.FileSystemObject_Custom
  4. ASP 代碼同步修改:
    Set Fs = Server.CreateObject("Scripting.FileSystemObject_Custom")
  5. 原調用方式即失效:
    Server.CreateObject("Scripting.FileSystemObject") 
    → 錯誤 800401f3 (類別未註冊)
  • 優點:白名單機制,僅知曉新 ProGID 的代碼可用
  • 缺點:需修改所有合法 ASP 檔案

方法三:修改 CLSID (針對 <object> 標籤調用)

  1. 註冊表 HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID
  2. 修改值:{0D43FE01-F093-11CF-8940-00A0C9054228} → {0D43FE01-F093-11CF-8940-00A0C9054229} (尾位 +1)
  3. <object> 標籤調用同步修改:
    <object runat="server" id="fs1" classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054229"></object>
  4. 原 CLSID 調用即失效
  • 優點:針對宣告式實例化 (<object>) 有效
  • 缺點:不影響 CreateObject 呼叫,需配合方法二

綜合建議

  1. 自有伺服器:方法二 + 方法三雙重修改,建立專屬命名空間
  2. 共享主機:請求服務商實施方法二
  3. 極高安全:方法一註銷,改用資料庫/XML 替代檔案操作

驗證腳本

<%
' 測試 CreateObject
On Error Resume Next
Set fso1 = Server.CreateObject("Scripting.FileSystemObject")
If Err.Number <> 0 Then Response.Write("CreateObject 原名失效: " & Err.Description & "<br>")

' 測試新 ProGID
Set fso2 = Server.CreateObject("Scripting.FileSystemObject_Custom")
If Err.Number = 0 Then Response.Write("CreateObject 新名成功<br>")

' 測試 object 標籤 (需前端配合)
%>
Copyright © Windows教程網 All Rights Reserved