|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2006-04-22, 07:10 PM | #1 |
榮譽會員
|
如何在伺服器上禁止FSO?
眾所周知,FileSystemObject元件的強大功能及破壞性是它屢屢被免費主頁
提供商(那些支持ASP)的禁用的原因,我整理了一下,本來只找到兩種方法,後來 被某人一刺激,硬是想到第三種不為人所知的方法,哈哈,也不知道是不是這樣的。 第一種:用RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll(win98路徑)來註銷該群組 件。此方法過於狠毒,屬於同歸於盡的方法,大家都沒得用,是下招 第二種:修改Progid的值,在ASP裡使用元件的方式通常是 Set 對像名=Server. CreateObject("Progid",這時候我們就可以通過修改註冊表中的Progid值從達 到禁用該群組件的方法。在 開始-執行中敲入regedit,然後找到HKEY_CLASSES_ROO T\Scripting.FileSystemObject,這時候我們就可以更改該Progid的值了,如改 成Scripting.FileSystemObject8。這樣在ASP頁裡就這樣使用了: <%@ Language=Vbscript%> <% Set Fs=Server.CreateObject("Scripting.FileSystemObject8" %> (如果你前面沒有使用過該群組件的話,則無須重啟,就可以看到效果了,否則請重 啟後看效果。) 這時候我們看看還是用原來的使用方法的結果: <%@ Language=Vbscript%> <% Set Fs=Server.CreateObject("Scripting.FileSystemObject" %> 這時候的執行結果為: 伺服器對像 錯誤 'ASP 0177 : 800401f3' Server.CreateObject 失敗 /aspimage/testfile2.asp, 行3 800401f3 (OK,達到我們的要求) 該方法由於本人遲了兩步,結果就讓別人搶著回答了,這樣極大的刺激了我,結 果就產生了第三種方法。 第三種:細心的高手們會想,既然能通過修改Progid值來禁用該群組件,那Clsid是 否也可以來修改呢?(OK,你想得和我一樣)我們知道,除了CreateObject方法以 外,也可以使用一般的<object>標注建立一個元件,我們可以在ASP裡面使用HTM L的<object>標注,以便在網頁中加入一個元件。方法是: <object runat=server id=fs1 scope=page progid="Scripting.FileSystemObj ect"></object> Runat表示是在服務端執行,Scope表示元件的生命週期,可以選用Session,Appl ication或page(表示本頁面,也可預設) 這種寫法對我們沒用,還有一種寫法是: <object runat=server id=fs1 scope=page classid="clsid:clsid的值"></obj ect> 我們也可以通過修改該Clsid的值而禁用該群組件,如將註冊表中HKEY_CLASSES_RO OT\Scripting.FileSystemObject\CLSID的值0D43FE01-F093-11CF-8940-00A0C90 54228改成0D43FE01-F093-11CF-8940-00A0C9054229(改了最後面一位),這時候的 寫法為: <object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11 CF-8940-00A0C9054229"></object> 看執行結果,沒問題,OK。這時候我們再用 <object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11 CF-8940-00A0C9054228"></object> 這時候就出現錯誤了。 新增一用戶:iusr_domain IIS裡設定對應站點的匿名用戶IUSR_DOMAIN CACLS: 設定目錄權限 這樣FSO可用,但不會影響別人 |
__________________ |
|
送花文章: 3,
|
2006-04-22, 07:11 PM | #2 (permalink) |
榮譽會員
|
給你的FileSystemObject對像加把鎖
現在國內提供支持ASP的免費空間越來越多了,對於ASP愛好者來說無疑是個好的勢頭,但是很多提供免費ASP空間的站點都沒有對FileSystemObject這個對象做出任何限制,這也就導致了安全問題。比如,今年愚人節「東莞視窗」所有的主頁都遭到了黑客的攻擊,其實做這件事情很簡單,就是使用FileSystemObject對象,具體的程序就不再討論了。而另外一個比較有名的提供ASP空間的站點「網界」同樣也存在這個安全漏洞,很容易遭到攻擊。不僅僅是這些提供免費空間的站點存在這個安全漏洞,很多國內的虛擬主機提供商同樣也存在這個安全隱患。這樣給商業用戶帶來的危害就很大了。 那麼我們如何才能限制用戶使用FileSystemObject對象呢?一種極端的做法是完全反註冊掉提供FileSystemObject對象的那個元件,也就是Scrrun.dll。具體的方法如下: 在MS-DOS狀態下面按鍵輸入: Regsvr32 /u c:\windows\system\scrrun.dll (注意:在實際操作的時候要更改成為你本機的實際路徑) 但是,顯而易見,如果這樣做,那麼包括站點系統管理員在內的任何人都將不可以使用FileSystemObject對象了,這其實並不是站點管理人員想要得到的結果,畢竟我們使用這個對象可以實現方便的在線站台管理,如果連繫統管理員都沒法使用了,那可就得不償失了,但是不禁止這個危險的對象又會給自己的站點帶來安全漏洞。那麼有沒有兩全其美的方法呢?有!具體方法如下: 我們可以做到禁止他人非法使用FileSystemObject對像,但是我們自己仍然可以使用這個對象. 方法如下: 搜尋註冊表中 HKEY_CLASSES_ROOT\Scripting.FileSystemObject 鍵值 將其更改成為你想要的字串串(右鍵-->"重新命名",比如更改成為 HKEY_CLASSES_ROOT\Scripting.FileSystemObject2 這樣,在ASP就必須這樣引用這個對象了: Set fso = CreateObject("Scripting.FileSystemObject2" 而不能使用: Set fso = CreateObject("Scripting.FileSystemObject" 如果你使用通常的方法來使用FileSystemObject對象就會無法使用了。 哈哈,只要你不告訴別人這個更改過的對象名稱,其他人是無法使用FileSystemObject對象的。這樣,作為站點管理者我們就杜絕了他人非法使用FileSystemObject對象,而我們自己仍然可以使用這個對象來方便的實現網站在線管理等等功能了! (以上方法在Win98+PWS以及WinNT4+IIS4環境下測試通過) |
送花文章: 3,
|