ASP 執(zhí)行時(shí),是以“IUSR_機(jī)器名”的身份訪問硬盤的,這里沒給該用戶帳號(hào)權(quán)限,ASP 也就不能讀寫硬盤上的文件了。
解決方法:在服務(wù)器上打開資源管理器,用鼠標(biāo)右鍵點(diǎn)擊asp文件所在目錄或硬盤分區(qū),選擇“屬性”,選擇“安全”選項(xiàng)卡,此時(shí)就可以看到有哪些帳號(hào)可以訪問這個(gè)目錄,分區(qū)(卷)及訪問權(quán)限。默認(rèn)安裝后,出現(xiàn)的是“Everyone”具有完全控制的權(quán)限。點(diǎn)“添加”,將“IUSR_機(jī)器名”給予“完全控制”或相應(yīng)的權(quán)限。
這樣做有一定的安全隱患,因?yàn)橥ㄟ^fso可以獲得讀寫文件的權(quán)限,容易被黑客利用,下面是一種方法。
我們知道,除了CreateObject方法以外,也可以使用一般的標(biāo)注建立一個(gè)組件,我們可以在ASP里面使用HTML
Runat表示是在服務(wù)端執(zhí)行,Scope表示組件的生命周期,可以選用Session,Application或page(表示當(dāng)前頁(yè)面,也可缺省)
我們也可以通過修改該Clsid的值而禁用該組件,如將注冊(cè)表中HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID的值0D43FE01- F093-11CF-8940-00A0C9054228改成0D43FE01-F093-11CF-8940-00A0C9054229(改了最后面一位),這時(shí)候的寫法為:
CF-8940-00A0C9054229">
看運(yùn)行結(jié)果,沒問題,OK。這時(shí)候我們?cè)儆肅F-8940-00A0C9054228">這時(shí)候就出錯(cuò)了。
新建一用戶:iusr_domain
IIS里設(shè)置對(duì)應(yīng)站點(diǎn)的匿名用戶IUSR_DOMAIN
CACLS: 設(shè)置目錄權(quán)限
這樣FSO可用,但不會(huì)影響別人
預(yù)防的辦法:
限制用戶使用FileSystemObject對(duì)象。一種極端的做法是完全反注冊(cè)掉提供FileSystemObject對(duì)象的那個(gè)組件,也就是Scrrun.dll。具體的方法如下:
在MS-DOS狀態(tài)下面鍵入:
Regsvr32 /u c:\windows\system\scrrun.dll
(注意:在實(shí)際操作的時(shí)候要更改成為你本地的實(shí)際路徑)