文章作者:勇敢的风 [E.S.T 顾问团]
信息来源:邪恶八进制信息安全团队(
www.eviloctal.com)
第一章 基础篇
1.1 ASP介绍及构成
1.2 VBScript简介
1.3 表单的提交与获取
1.4 Access数据库简略介绍及数据库基础
1.5 关于ASP组件
1.6 关于ADO
1.7 ASP的应用
第一节 ASP介绍及构成
实际上网络技术发展到现在,对于ASP的介绍实际上是不用在这里重复的,可是感觉很多人对他的构成还是有误区,所以还是需要简单的介绍一下。
1.1 ASP介绍(转网络上的介绍)
ASP是Active Server Page的缩写,意为“活动服务器网页”。ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。ASP的网页文件的格式是.ASP,现在常用于各种动态网站中。 ASP是一种服务器端脚本编写环境,可以用来创建和运行动态网页或Web应用程序。ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。利用ASP可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML网页作为用户界面的web应用程序。 与HTML相比,ASP网页具有以下特点:
(1)利用ASP可以实现突破静态网页的一些功能限制,实现动态网页技术;
(2)ASP文件是包含在HTML代码所组成的文件中的,易于修改和测试;
(3)服务器上的ASP解释程序会在服务器端制定ASP程序,并将结果以HTML格式传送到客户端浏览器上,因此使用各种浏览器都可以正常浏览ASP所产生的网页;
(4)ASP提供了一些内置对象,使用这些对象可以使服务器端脚本功能更强。例如可以从web浏览器中获取用户通过HTML表单提交的信息,并在脚本中对这些信息进行处理,然后向web浏览器发送信息;
(5)ASP可以使用服务器端ActiveX组件来执行各种各样的任务,例如存取数据库、发现哦那个Email或访问文件系统等。
(6)由于服务器是将ASP程序执行的结果以HTML格式传回客户端浏览器,因此使用者不会看到ASP所编写的原始程序代码,可放置ASP程序代码被窃取。
1.2 asp的构成
asp主要有内置对象和脚本语言构成
1.2.1 内置对象(转网络上的介绍)
Application对象
Application对象能用于存储和接受可以被某个应用程序的所有用户都能共享的信息。
集合
Application.Contents(key)
在应用程序级定义的所有数据和对象的集合,不使用标识符<OBJECT>。Key是该Application的条目的名称。
Application.StaticObjects(key)
使用<OBJECT>标识符定义的所有在应用程序级的数据和对象的集合。Key是该Application条目的名称。
事件
Application.OnEnd
当Web服务器被关闭或卸载该应用程序时会激发该事件。该事件会在所有的客户进程结束时执行。
Application.OnStart
当请求该应用程序中的第一个网页时激发该事件。该事件在所有客户进程开始之前执行。
方法
Application.Lock
防止其他的用户修改Application对象中的任何变量。
Application.UnLock
允许其他用户修改Application对象中的变量。
Session对象
Session对象用于存储和接受有关某一特殊用户进程的信息。
集合
Session.Contents(Key)
所有在Session水平定义的,没有使用<OBJECT>的数据和对象的集合。Key是Session条目的名称。
Session.StaticObjects(Key)
所有使用<OBJECT>在Session水平定义的数据和对象的集合。Key是返回的属性。
方法
Session.Abadon
用于取消一个用户Session。破坏包含在用户Session中所有的数据和对象。
属性
Session.CodePage
指明当显示动态内容时,所使用的服务器代码页。
Session.LCTD
指明当显示动态内容时,所使用的局部标识。
Session.SessionID
一个用户session的唯一标识。
Session.TimeOut
在一个空闲session自动结束之前所等待的时间,该属性的缺省值为20分钟。
Request对象
Request对象用于接受所有从浏览器发往你的服务器的请求内的所有信息。
集合
Request.ClientCertificate(key[SubField])
所有客户证书的信息的集合。对于Key,该集合具有如下的关键字:
Subject 证书的主题。包含所有关于证书收据的信息。能和所有的子域后缀一起使用。
Issuer 证书的发行人。包含所有关于证书验证的信息。除了CN外,能和所有的子域后缀一起使用。
VadidFrom 证书发行的日期。使用VBScript格式。
ValidUntil 该证书不在有效的时间。
SerialNumber 包含该证书的序列号。
Certificate 包含整个证书内容的二进制流,使用ASN.1格式。
对于SubField,Subject和Issuer关键字可以具有如下的子域后缀:(比如:SubjectOU或IssuerL)
C 起源国家。
O 公司或组织名称。
OU 组织单元。
CN 用户的常规名称。
L 局部。
S 州(或省)。
T 个人或公司的标题。
GN 给定名称。
I 初始。
当文件cervbs.inc(VBScript使用)或cerjavas.inc(Jscript使用)通过使用#INCLUDE导向包含在你的Active Server Page里时,下面两个标志可以使用:
ceCertPresent 指明客户证书是否存在,其值为TRUE或FALSE。
ceUnrecongnizedIssure 指明在该链表中的最后的证书的发行者是否未知,其值为TRUE或FALSE。
Request.Cookies(Cookie[(key).Attribute])
Cookie的集合。允许获得浏览器的Cookie。Cookie指明返回那一个Cookie。Key用于从Cookie字典中返回具有某一关键字的Cookie值。对于Attribute,你能使用属性HasKeys来确定某一Cookie是否具有子关键字。HasKeys的值为TRUE或FALSE。
Request.Form(Parameter)[(Index).Count]
填写在HTML的表单中所有的数据的集合。Parameter是在HTML表单中某一元素的名称。当某一参数具有不止一个值(比如,当在<SELECT>中使用MULTIPLE属性时)时,使用Index。当某一参数具有多值时,Count指明多值个数。
Request.QueryString(Varible)[(Index).Count]
查询字符串的所有值的集合。Varible是在查询字符串某一变量的名称。当某一变量具有多于一个值时,使用Index。当某一参数具有多值时,Count指明值的个数。
Request.ServerVaribles(Server Environment Variable)
环境变量的集合。允许读取HTTP头。你可以通过使用HTTP_前缀来读取任何头信息。比如,HTTP_USER_AGENT接受客户代理HTTP头(浏览器类型)。除此外,你可以使用下表所示的变量获得任何环境信息。
ALL_HTTP 客户端发送的所有HTTP标头,他的结果都有前缀HTTP_。
ALL_RAW 客户端发送的所有HTTP标头,其结果和客户端发送时一样,没有前缀HTTP_
APPL_MD_PATH 应用程序的元数据库路径。
APPL_PHYSICAL_PATH 与应用程序元数据库路径相应的物理路径。
AUTH_PASSWORD 当使用基本验证模式时,客户在密码对话框中输入的密码。
AUTH_TYPE 这是用户访问受保护的脚本时,服务器用于检验用户的验证方法。
AUTH_USER 代验证的用户名。
CERT_COOKIE 唯一的客户证书ID号。
CERT_FLAG 客户证书标志,如有客户端证书,则bit0为0。如果客户端证书验证无效,bit1被设置为1。
CERT_ISSUER 用户证书中的发行者字段。
CERT_KEYSIZE 安全套接字层连接关键字的位数,如128。
CERT_SECRETKEYSIZE 服务器验证私人关键字的位数。如1024。
CERT_SERIALNUMBER 客户证书的序列号字段。
CERT_SERVER_ISSUER 服务器证书的发行者字段
CERT_SERVER_SUBJECT 服务器证书的主题字段。
CERT_SUBJECT 客户端证书的主题字段。
CONTENT_LENGTH 客户端发出内容的长度。
CONTENT_TYPE 客户发送的form内容或HTTP PUT的数据类型。
GATEWAY_INTERFACE 服务器使用的网关界面。
HTTPS 如果请求穿过安全通道(SSL),则返回ON。如果请求来自非安全通道,则返回OFF。
HTTPS_KEYSIZE 安全套接字层连接关键字的位数,如128。
HTTPS_SECRETKEYSIZE 服务器验证私人关键字的位数。如1024。
HTTPS_SERVER_ISSUER 服务器证书的发行者字段。
HTTPS_SERVER_SUBJECT 服务器证书的主题字段。
INSTANCE_ID IIS实例的ID号。
INSTANCE_META_PATH 响应请求的IIS实例的元数据库路径。
LOCAL_ADDR 返回接受请求的服务器地址。
LOGON_USER 用户登录Windows NT的帐号
PATH_INFO 客户端提供的路径信息。
PATH_TRANSLATED 通过由虚拟至物理的映射后得到的路径。
QUERY_STRING 查询字符串内容。
REMOTE_ADDR 发出请求的远程主机的IP地址。
REMOTE_HOST 发出请求的远程主机名称。
REQUEST_METHOD 提出请求的方法。比如GET、HEAD、POST等等。
SCRIPT_NAME 执行脚本的名称。
SERVER_NAME 服务器的主机名、DNS地址或IP地址。
SERVER_PORT 接受请求的服务器端口号。
SERVER_PORT_SECURE 如果接受请求的服务器端口为安全端口时,则为1,否则为0。
SERVER_PROTOCOL 服务器使用的协议的名称和版本。
SERVER_SOFTWARE 应答请求并运行网关的服务器软件的名称和版本。
URL 提供URL的基本部分。
方法
Request.BinaryRead(Count)
接收一个HTML表单的未经过处理的内容。当调用此方法时,Count指明要接收多少字节。在调用此方法后,Count指明实际上接收到多少个字节。
属性
Request.TotalBytes
查询体的长度,以字节为单位。
Response对象
集合
Response.Cookies(Cookie)[Key.Attribute]
允许你向浏览器添加Cookie。Cookie是要添加的Cookie的名称。Key用于创建Cookie字典时。Attribute指明下表所示Cookie属性之一:
Domain 指明这个Cookie只送往该域。比如,“magicw3.com”。
Expires 该Cookie过期的日期。比如,“July 4,1998”。如果该属性没有指明,则此Cookie会在用户离开该Web站点后立即过期。
HasKeys 指明该Cookie是否是Cookie字典的一员,具有值TRUE或FALSE。
Path 指明该Cookie只被送往该路径。比如,“/wwwtoot/magic”。
Secure 指明该Cookie是否是加密的。具有值TRUE或FALSE。
方法
Response.AddHeader Name,Value
向应答中添加一个新的HTTP头。Name为新HTTP头的名称。Value为该头变量的值。你可以添加任何名称和任何值的HTTP头。
Response.AppendToLog String
向Web服务器的日志进口添加一字符串。String为要添加到日志文件中的字符串。
Response.BinaryWrite Data
在回应中发送非字符串信息。Data是要发送的数据。
Response.Clear
清除缓冲的回应。并不清除HTTP头。
Response.End
强迫Web服务器停止执行更多的脚本,并发送当前结果。
Response.Flush
对于一个缓冲的回应,发送所有的缓冲信息。
Response.Redirect URL
试图使浏览器重定向到一新的网页。Url为新网页的Internet地址。
Response.Write Variant
向浏览器发送字符串。Variant是一字符串或一个具有字符串值的变量。
属性
Response.Buffer
缓冲一Active Server Page。回应只到某一页结束或Response.Flush或Response.End方法调用时才发送出去。
Response.CacheControl
指明是否Proxy服务器能缓存Active Server Page。缺省时,其值为FALSE 。
Response.CharSet(Charsetname)
指明用于当前页的字符集。一个可能的值为“ISO_LATIN_1”。
Response.ContentType
指明回应内容的类型。可能的值为text/plain和image/GIF。
Response.Expires
浏览器可以缓存当前页的时间长度,以分钟为单位。
Response.ExpiresAbsolute
浏览器不能再缓存当前页的日期和时间。
Response.IsClientConnected
指明某一浏览器是否仍然和服务器连接。具有值TRUE或FALSE。
Response.PICS
用于添加网页的PICS等级。PICS级别指明某一网页的内容级别,比如暴力或色情的程度等。
Response.Status
指明由服务器返回的状态行
Server对象
允许使用服务器上各种功能函数。
方法
Server.CreateObject(ProgID)
在当前的Active Server Page内创建一个要用的对象的实例。ProgId指明要创建对象的类型。比如:
<% Set MyBrow=Server.CreateObject(“MSWC.BrowseType”) %>
Server.cfmLEncode(String)
使用特殊的HTML字符转换一字符串。关于这些字符,请参看附录D“HTML快速参考”。String是要转换的字符串。
Server.MapPath(Path)
把一相对或虚拟路径映射成物理路径。Path是要转换的相对或虚拟路径。
Server.URLEncode(String)
把一字符串转换成URL编码规则格式。String是要转换的字符串。
属性
Server.ScriptTimeOut
确定一个脚本在结束前最多允许执行的时间。时间以秒为单位进行记数,确省值为90秒。
1.2.2 构成语言
1.2.1中介绍了asp的5个常用的内置对象,ObjectContext对象没有介绍,个人认为没有太大必要。
从上面的对象介绍上可以看出asp本身并没有任何程序上的功能,也不能实现我们想要做的任何功能,有不少朋友应该会有疑问,网络上很多介绍asp函数,方法等等难道不是asp的内容么?的确,这些函数、方法等均不属于asp内容他属于VBScript的内容,由于MSIIS将VBScript作为默认的语言脚本而被大多数人所误解。
asp可以使用的脚本由VBScript和Jscript两种脚本语言,在本系列教程中主要以VBScript作为主讲内容。
这里附上另外一个asp内置对象的用法与windows脚本手册
ObjectContext对象
该对象用于控制Active Server Pages的事务处理。事务处理由Microsoft Transaction Server (MTS)管理。
事件
ObjectContext.OnTransactionAbort
由放弃的事务处理事件激发,在脚本完成处理后发生。
ObjectContext.OnTransactionCommit
由成功的事务处理事件激发,在脚本完成处理后发生。
方法
ObjectContext.SetAbort
显式的放弃一次事务处理。
ObjectContext.SetComplete
覆盖前面任何调用ObjectContext.SetAbort方法的调用。
PS:本节内主要是网络转载内容可以作为资料来保存,无技术要点。