快速业务通道

使用ADSI、ASP和一对魔术戏法自动地创立一个虚拟目录的方法

作者 佚名 来源 ASP编程 浏览 发布时间 2013-07-09
从我们的表单来的,并且没有欺骗我们的服务器。我们将检索HTTPReferer服务器变量和服务器名来测试它。这儿你可以做许多检查;在我们的测试中不必十分坚固。关于安全站点的优秀文章,请查看由DmitryKhanine整理的EasyApplicationStateSecurely(http://www.15seconds.com/Issue/990114.htm)。在代码的结尾插入以下代码:
strHTTPReferer=Request.ServerVariables("HTTP_REFERER")
strServerName=Request.ServerVariables("SERVER_NAME")

''我们是从我们的表格来的吗?如果不是,则拒绝存取

IfstrHTTPReferer<>"http://"&strServerName&"/Servin/Default.asp"then
Response.Write("AccessDenied")
Response.End
EndIf

现在我们的网页已证实我们的用户是从我们的表单传递结果的,我们可以获取虚拟目录(VirtualDirectory)、所有者(Owner)和脚本权限(ScriptPermissions)标记的值。请注意我们是怎样根据从checkboxScript获取的值来改变的,如果它被选定,就设为True,如果没有被选定就设为False。在你的最后一位代码后插入以下代码:
strVirtualDirectoryName=Request.Form("textVirtualDirectory")
strOwner=Request.Form("selectOwner")

IfRequest.Form("checkboxScript")="on"Then
bolScriptPermissions="True"
Else
bolScriptPermissions="False"
EndIf

我们需要确认IIS应用程序是否存在。使用IISAdmin对象,我们检查是否应用程序早已存在并且把相应的警告传递给用户。

''DoesthisIISapplicationalreadyexistinthemetabase?

OnErrorResumeNext
SetobjIIS=GetObject("IIS://localhost/W3SVC/1/Root/"&strVirtualDirectoryName)

IfErr.Number=0Then
Response.Write("Anapplicationwiththisnamealreadyexists.Click")
Response.Write("<AHREF=http://"&strServerName&"/servin/default.asp>")
Response.Write("here</A>tochooseadifferentname.")
Response.End
EndIf

SetobjIIS=Nothing
现在我们将使用IIS管理对象在meta数据库中创建IIS应用程序。

''创建IIS应用程序
SetobjIIS=GetObject("IIS://localhost/W3SVC/1/Root")
strVirtualDirectoryPath=objIIS.Path&"\"&strVirtualDirectoryName
使用VBScript的FileSystemObject对象,我们将测试文件夹是否存在于这个文件系统;如果不存在,我们将使用CreateFolder命令创建它。
SetobjFileSystem=Server.CreateObject("Scripting.FileSystemObject")

''Testtoseeifthefolderexistsinthefilesystem.Ifnot,createit

OnErrorResumeNext
SetFolder=objFileSystem.GetFolder(strVirtualDirectoryPath)
IfHex(Err.number)="4C"Then
objFileSystem.CreateFolderstrVirtualDirectoryPath
EndIf

SetobjFileSystem=Nothing

使用Administration对象(在这篇文章中我们多次使用),我们开启脚本权限(加入用户选择了这这选项)并定义虚拟目录作为一个进程中的应用。
''在文件系统上创建文件夹

SetobjVirtualDirectory=objIIS.Create("IISWebVirtualDir",strVirtualDirectoryName)
objVirtualDirectory.AccessScript=bolScriptPermissions
objVirtualDirectory.Path=strVirtualDirectoryPath
objVirtualDirectory.SetInfo
objVirtualDirectory.AppCreatebolInProcessApplication

现在看一下这个魔术:设置权限。我们确实认为这是很简单的部分。不幸地是,在ADSI中不存在能为虚拟目录设置权限的对象。惊慌失措,并且还有一点不舒服的感觉。(或者是由于昨天晚上大吃泰国饭菜引起的?)

搜索15seconds.com的ADSI列表服务器,发现一篇引用DOSCACLS.EXE文件的通讯(http://listserv.15seconds.com/scripts/wa15seconds.exe?A2=ind9806C&L=ADSI&P=R1861)并且通过DOSCMD文件使用它。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号