星期二, 三月 13, 2007

如何在WEB服务器中禁用不必要的组件.

我们单位每个部门都有自己的网站,然后通过一个总管来上传,现在出现一个新问题,有的同志偷偷的把带有上传功能的ASP网页夹在部门网页中通过总管的FTP上传上来,然后再上传cmd.exe rar.exe和一些带解压的网页,就可以做到1、想传什么就自己上传什么。不再通过FTP了。2、自己可以在IIS下通过RAR解压来创建新的文件夹。可想想其实每一步都很合理,加在一起就不合法了。
想了很久,找了很多方法最后总结了一个比较成功的方法.
在基于windows平台上的WEB服务器可以能过以下方法达到完全禁用或者部分禁用组件来实现IIS的安全性.第一种:修改组件的Progid的值,在ASP里调用组件的方式通常是 Set 对象名=Server. CreateObject("Progid"),这时候我们就可以通过修改注册表中的Progid值从达 到禁用该组件的方法。在 开始-运行中敲入regedit,然后找到HKEY_CLASSES_ROO T\adodb.stream,这时候我们就可以更改该Progid的值了,如改 成adodb.stream8。这样在ASP页里就这样调用了: <%@ Language=Vbscript%> <% Set Fs=Server.CreateObject("adodb.stream8") %> (如果你前面没有调用过该组件的话,则无须重启,就可以看到效果了,否则请重 启后看效果。) 这时候我们看看还是用原来的调用方法的结果: <%@ Language=Vbscript%> <% Set Fs=Server.CreateObject("adodb.stream") %> 这时候的运行结果为: 服务器对象 错误 'ASP 0177 : 800401f3' Server.CreateObject 失败 /www/aa.asp, 行3 第二种方法:修改Clsid,除了CreateObject方法以 外,也可以使用一般的标注建立一个组件,我们可以在ASP里面使用HTML的标注,以便在网页中加入一个组件。方法是: Runat表示是在服务端执行,Scope表示组件的生命周期,可以选用Session,Appl ication或page(表示当前页面,也可缺省) 这种写法对我们没用,还有一种写法是: 我们也可以通过修改该Clsid的值而禁用该组件,如将注册表中HKEY_CLASSES_RO OT\adodb.stream\CLSID的值0D43FE01-F093-11CF-8940-00A0C90 54228改成0D43FE01-F093-11CF-8940-00A0C9054229(改了最后面一位),这时候的 写法为: 看运行结果,没问题,OK。这时候我们再用 这时候就出错了。 这样的话,如果只是少量的网站管理员要用ASP的FSO或adodb.stream组件的话,我们可以把正确的proid和clsid告诉他,不过,据我现在看来用这两个组件很少,除非都有些心术不正的人.我现在用这种方法禁止了三个组件,一是fso 二是adodb.stream 三是WScript.Shell,呵呵,这样的话,如果再正常设置IIS,安全性就可以更高了.

没有评论: