给“FSO对象”上把锁

数码时尚

  FSO(FileSystemObject)对象想必大家都不陌生吧!现在很多利用ASP技术构建的动态网站都要用到它。FSO对象的强大功能,为我们对计算机文件系统的访问提供了方便,但在方便自己的同时,也为“不怀好意”者开了可怕的后门,给系统留下了安全隐患。

  那FSO是怎么访问计算机文件系统的呢?下面举个简单的例子:

  FOS对象的语法:Scripting.FilesystemObject

  在ASP文件中的描述如下:

  <%

  set fs=CreateObject("Scripting.FilesystemObject")

  set a=fs.CreateTextFile("c:\tfile.txt",True)

  a.Writeline("使用fso对象简单例子")

  a.close

  %>

  这个例子是使用FSO对象在C盘根目录创建一个名为“tfile.txt”的文本文件,然后在文件中添加一行“使用fso对象简单例子”文本。

  分析:以上代码使用CreateObject函数返回FilesystemObject对象FS,使用fs.CreateTextFile方法创建一个文本文件“tfile.txt”作为TextSream对象a,然后用Writeline方法在此文件中写入一行文本,最后用close方法关闭文件。

  是不是很简单呀,而且对文件的创建、添加、删除是很方便的,如果FSO对象被一些“不怀好意”的人使用,那可就糟糕了。没关系!给FSO对象上把锁,这样我们的系统不就安全了吗!

  一、用RegSvr32命令禁用FSO对象

  单击“开始→运行”,在运行对话框中输入“RegSvr32 /u scrrun.dll”,接着会出现一个信息对话框“DllUnRegisterServer in scrrun.dll succeeded”,点击“确定”按钮后注销该组件。FSO对象包含在scrrun.dll组件中的,因此注销该组件后FSO对象也就不能使用了。但此方法过于狠毒,属于同归于尽的方法,是牺牲自己不能使用FSO对象为代价的,所以,不到万不得已不要使用哟!

  如果想使用FSO对象也很简单,在运行对话框中输入“RegSvr32 scrrun.dll”即可。

  二、修改Progid的值法

  在ASP里调用组件通常使用如下方式:

  Set 对象名 = Server.CreateObject("Progid")

  这时候我们就可以通过修改注册表中的Progid值达到阻止别人使用FSO对象。

  单击“开始→运行”,在运行对话框中输入“regedit”,然后在注册表编辑器中找到“HKEY_CLASSES_ROOT\Scripting.FileSystemObject”,这时候我们就可以更改该Progid的值了,如把Scripting.FileSystemObject改成Scripting.FileSystemObject4,那么上面的例子在ASP页里FSO对象的使用就要做以下改动:

  将set fs=CreateObject("Scripting.FilesystemObject")改为set fs=CreateObject("Scripting.FilesystemObject4")

  这样别人就没办法调用我们的FSO对象了。