【asp源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了asp源码-【精品】asp的19个基本技巧 - 其它资料的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
asp 的 19 个基本技巧1. 现在的日期时间命令是ltnowgt 即可2.
ASP 取得表格from数据输入的方法,是使用一个内置的对象object—Requect它以 getpost 而异。
.dll 文件供
ASP 使用需将 DLL 文件注册方可:3.若要自己用 VB 或其它语言编写,DOS 下输入 regsbr32 .dll4.显示五个重复的句子,字体越来越大lt for i1 to 5 gtltfont sizelt i gt color00ffffgt快速 ASPlt/fontgtltbrgtlt next gt5.传送字符串到用户端response.write string如:lt response.write quotWelcomequot gt6.链接到指定的 URL 地址response.redirect url如:lt response.redirect quothomepage.aspquotgt但是如果此.
ASP 的文件内容已经传送到用户断,则再用 redirect 时会发生错误。
7.其他语言与
ASP 的结合:如:早上显示早安,下午显示你好ltif timegt12:00:00 AM and timelt12:00:00 PM thengreetingquot早安quotelsegreetingquot你好quotend ifgtltgreeting gt8.ltscriptgt标记在
ASP 中的应用例:lthtmlgtltbodygtlt call function1 gtlt/bodygtlt/htmlgtltscript runatserver languagejavascriptgtfunction function1...lt/scriptgt9.include 包括其它文件lt--include virtualfilequotfilenamequot--gtvirtual 指虚拟的文件地址。
file 代表绝对的文件地址。
如:lt--include virtualquot/booksamp/test.aspquot--gtlt--include filequot/test/test.aspquot--gt而且可以层层嵌套。
另外include 不能在lt--gt之内10.
ASP 取得表格输入数据的方法:GET POST一.get:用户端将数据加到 URL 后,格式为”?字段 1输入数据 1amp字段 2输入数据 2amp...quot再将其送到服务器。
如: actionwww.abc.com 字段 Name 输入数据为 jack字段 age 的数据为 15,则用 get 方法为http://www.abc.comNamejackampAge15二.post:用户端用 http 信息数据传送到服务器
ASP 中:get:使用“输入数据 Request.QueryStringquot字段名quotquot将附加于 URL 的数据取出。
post:使用“输入数据Request.Formlquot字段名quotquot读取 HTTP 信息数据字段。
Request.QueryString 范例如:〈A heryquotaspform.aspNamejackampAge15quotgt按此〈/A〉〈p〉Name:ltrequest.QueryStringquotNamequotAge:ltrequest.QeueryStringquotAgequot get 范例aspturm.
asp:ltform actionquotasp1b.aspquot methodquotgetquotgt姓名: ltinput typetext namequotinput1quot valuequotYour namequotgtltpgt特征: ltselect namequotinput2quotgtltoptiongtcoolltoptiongthandsomeltoptiongtwarmheartedlt/selectgtltinput typesubmit valuequotokquotgtlt/formgtasp1b.
asp 的内容lthtmlgtltbodygtlt request.querystringquotinput1quot gt hi your character islt request.querystringquotinput2quot gtlt/bodygtlt/htmlgt11.request.From语法: request.Fromnameindex.countname:字段名index:当同一字段输入多个值时,指针值 index 指定要读取同一字段的那一个值,范围由 1 到request.Fromname.countcount:由 request.Fromname.count 可知 name 字段输入几个值,若无此 name字段,count 为 0如下例:ltforI1 to request.fronquotinput1quot.countresponse.write request.Fromquotinput1quotIampquotltbrgtquotnextgt若 input1 有两个值则都显示出若未采用 index 指定读取哪个.可用〈for each item request.Fromquotinputquotrepomse.write item ampquotltbrgtquotnextgt也可用quot for each x in tewuest.Fromquot重复取得所有字段的输入值。
lt for each x in request.Form gtrequest.From ltxltrequest.Formxgt ltbrgtlt next gt12.获取客户端 TCP/IP 端口的方法:如: tcp/ip port is ltrequestquotserver_portquotgt使用 server_port 可以得到接收 HTTP request 的连接 port 信息13.通过 HTTP_ACCEPT_LANGUAGE 的 HTTP 表头信息可以得到用户端的使用语言环境.以下例子判断用户端的语言环境给出不同的页面.lt languagerequest.servervariablesquotHTTP_ACCEPT_LANGUAGEquotif languagequotenquot then gtlt--include filequotenglish.aspquotgtlt else gtlt--include filequotchina.aspquotgtlt end ifgt14.主页保留的期限如果用户端浏览器在一个主页保留的期限内再度浏览此主页则原在用户端硬盘上的主页内容将被显示.response.expiresnumber其中 NUMBER 为记录数据盒PAGE BOX的保留期限单位是分钟.或:response.expiresabsolutedatetime如:设定一个主页保留期到某个日子.15.连接到指定的 URL 地址如:你希望确认用户已经看过 INDEX.HTM则可以检查是否已经看过如尚未确认则自动连接到首页ltif not sessionquotBEEN_to_home_pagequot thenresponse.redirect quotindex.aspquotend ifgt16.判断是回到本页还是第一次进入ltif user_has_been_here_before thenresponse.write quotlth3 aligncentergt Welcome Backagainquotelseresponse.write quotWelcomequotend ifgt17.显示数据库中的图片与超级连接ltset connserver.creatobjectquotADODB.connectionquotconn.open quotmyaddressquotset rsconn.executequotselect nametelurlimage frommyaddressquotgtltpgtlttabelgtlttrgtlt for i0 to rs.fields.count-1 gtlttdgtltbgtltrsi.name gtlt/bgtlt/tdgtlt next gtlt/trgtlt do while not rs.eof gtlttrgtlt for i0 to rs.fields.count-1 gtlttd valign topgtltif rsi.namequotimagequot thenresponse.write quotltimg srcquotquotquotamprsiampquotquotquot gtquotelseif rsi.namequoturlquot thenresponse.write quotlta hrefquotquotquotamprsiampquotquotquotgtquotamprsiampquotlt/agtquotelseresponse.write rsiend ifend ifgtlt/tdgtltnextgtlt/trgtlt rs.movenextlooprs.closeconn.closegtlt/htmlgt18. 用
ASP 取得浏览器信息ltset aserver.creatobjectquotMSWC.BROWSERTYPEquotmsgquot您使用的浏览器是:quota.browserquotversionquota.versiongtltmsggt19.
asp 访问 cookies 的方式使用 response 和 request如下:写入 cookies:response.cookiesquot待写入的 coookies 名称quotquot待写入数据“读取 cookies:读取数据request.cookiesquot待读的 cookies 名称quot
ASP 编写计数器的优化方法很多的网站都有记数器,用来记录网站的访问量,这给网站管理员即时了解本网站的运行及访问情况提供了很多的方便。
笔者研究过很多用
ASP 编写的计数器程序,发现大部份都是在一个访客访问站点的时候就打文本文件或数据库,读取以前的计数值进行加 1,然后再写入文件,若网站访问量很大,可能会对系统造成很大的负担,那么有没有优化的方法呢,笔者经过研究测试,答案是:有。
熟悉
ASP 的朋友都知道,
ASP 提供一个 Application 属性用来保存服务器的一些公共变量,我们可以用这个变量来保存记数器的信息。
思路是先设定两个 Application 变量,一个 Application“TotalCount”,用来保存记数值;另一个 Application“LastwriteTime”,用来保存上次把记数值保存到文件的时间。
我们可以自己定义把计数值保存到文件的间隔时间,比如 1 小时、1 天或者一个月。
在有访客访网站的时候,让 Application“TotalCount”进行加 1,如果上次保存计数的时间与现在的时间差大于我们设定的保存时间间隔值,那么就把当前的计数值写入文件保存,这样就减少了程序的IO 操作,节约了系统的负担。
为了避免发生意外,如断电或者服务器停止反应需待重启等,我们可以设定保存时间间隔为2 小时,这样即使发生意外,损失也不会太大。
例程如下:ltDim oFSO 定义 FSO 组件对象Dim oFile 定义读写文件对象Dim nCount 定义从文件中读取的记数值Dim sFilePath 定义计数器保存文件的路径Const iInterval2 定义保存时间间隔为 2 小时SFilePathServer.MapPathquotCount/Count.txtquot 假设计数器文件在根目录下的 Count 目录中,文件名为 Count.txtIF ApplicationquotTotalCountquot0 or ApplicationquotTotalCountquotquotquot THEN如果第一次运行网站,比如重启后,我们就需要从文件中读取出以前的计数值 Set oFSOServer.CreateObjectquotScripting.FileSystemObjectquot 实例化文 件操作对象oFSO IF not oFSO.FileExistssFilePath THEN OFileoFSO.CreateTextFilesFilePathtrue 如果文件不存在,则创建一个文件 oFile.Writequot1quot 写入当前的计数值quot1quot oFile.close ApplicationquotTotalCountquot1 ELSE Set oFile oFSOt.OpenTextFilesFilePath NCountOFile.ReadLine ApplicationquotTotalCountquotClngnCount1 OFile.close End IF ApplicationquotLastwriteTimequot Now 设置最后一次访问的时间为当前时间ELSE ApplicationquotTotalCountquot ApplicationquotTotalCountquot1 IF DateDiffquotHquot ApplicationquotLastwriteTimequotNowgtiInterval THEN 如果当前时间与上次保存计数值的时间差大于设定的时间间隔,则把计数值重新写入文件 Set oFSOServer.CreateObjectquotScripting.FileSystemObjectquot 实 例 化文 件操 作对象oFSO OFileoFSO.OpenTextFilesFilePathtrue 打开文件 oFile.WriteApplicationquotTotalCountquot 写入当前的计数值 oFile.close ApplicationquotLastwriteTimequot Now 设置最后一次访问的时间为当前时间 END IFEnd IFResponse.Writequot欢迎光临本网站,你是访问本网站的第quot amp ApplicationquotTotalCountquot amp quot位访客!quotgt
ASP 常见问题之一1 CDONTS.NewMail 不能发邮件1 确定已经安装了 IIS 的 SMTP 服务。
2 在 IIS 管理器中,设置 smtp 服务的属性。
在中继对话框里设置“仅除以下列表以外”。
因为默认情况下它只给某列表中列出的服务器转信,但是这个列表是空的,所以发不出去。
2 无法登陆 SQL SERVER这是因为安装 SQL SERVER 时使用了 NT 验证模式,而
ASP 以匿名身份运行,不够资格访问数据库服务器。
解决方法:把 SQL SERVER 改成混合验证模式(包含 SQL 验证)3 ODBC 访问 Access 时出现无法访问注册表关键字的错误错误信息为:Microsoft OLE DB Provider for ODBC Drivers 错误 80004005MicrosoftODBC Microsoft Access Driver常见错误 不能打开注册表关键字 Temporaryvolatile Jet DSN for process 0x4ec Thread 0x81c DBC 0x22f3544 Jet。
这是因为 Windows2000 SP2 以后的新 bug 造成的。
也许微软不喜欢 ODBC 了,所以出此下策 。
正 确 的 方 法 是 使 用 OLEDB 来 连 接 Access 。
连 接 字 符 串 为 :ProviderMicrosoft.Jet.OLEDB.4.0Data Source数据库文件名4 权限问题
ASP 没有权限访问某些文件夹。
因此运行 VB 编写的组件可能会出毛病。
设置 system32 文件夹的属性,赋予 IUSR 用户运行权限即可。
ASP 也没有权限访问注册表。
这个可以用组件来实现。
把组件注册到 COM里,然后指定其以高级身份运行;或者取消虚拟目录的“匿名访问”,让访客输入管理员密码,这时候
ASP 就提升为管理员身份运行了。
ADSI 也是一样。
如果 Access 数据库存放在受保护的文件夹,就会出现 80004005 错误。
此时也需要设置文件夹的权限。
5 加密问题MD5 不是加密算法,因此不能解密。
要传输加密数据,关键是不能把算法暴露在客户端。
所以根本别想把客户端的数据加密传到服务器上。
6 保护知识产权
ASP 基本上算是不能加密的东西。
不要用 screnc 编码工具。
那根本是个垃圾。
要加密,就只能用组件技术了。
去学 VB 吧!7 安全问题别想偷偷摸摸的从客户端上传文件。
ltinput typefilegt绝对不可能用脚本预先设置文件名。
脚本语言没有权限访问客户端的硬盘,客户端组件和控件即使签名也会提示是否安装……这一切,都是为了访客的安全。
要不然你把访客的硬盘 format 了怎么办?8 与其他商家的合作问题想发短信,可以联系移动运营商;想开商场,可以找银行做支付接口。
这两项服务都要求在服务器上注册组件,所以挑选虚拟主机时要多加选择,避免花冤枉钱
ASP 实现简单的网页保护主要使用 request 对象的 ServerVariables 属性,通过它来获得环境变量的值。
使用的语法为:Request.ServerVariablesvariable,“variable”表示环境变量的名称,如服务器主机名称、WEB 服务器软件名等等,若“variable”为“REMOTE_ADDR”则表示访问者的 IP 地址,通过它就可以实现 IP 地址的过滤。
源程序如下:文件名:demo.
asp <html> <head> <meta http-equiv“Content-Type” content“text/htmlcharsetgb_2312-80”> <meta name“GENERATOR” content“Microsoft FrontPage Express2.0”> <style> <-- .as line-height: 15px font-size: 9pt a:hover color: rgb051240text-decoration:underline .p9 font-family: “宋体” font-size: 9pt line-height: 15pt .p12 font-family: “宋体” font-size: 12pt line-height: 18pt a:link text-decoration: none a:visited text-decoration:none a:hover text-decoration: underlinefont-size: 125%color:blue --> </style> <title>
ASP 页面防火墙功能演示</title> </head> <body background“back.jpg”> <% ′使用 Request.ServerVariables“REMOTE_ADDR”得到 IP 地址并保存在变量 rip 中 ripRequest.ServerVariables“REMOTE_ADDR” stripcstrrip ′取得 IP 地址第三个段的值并保存到 strip 中 for i1 to 2 striprightstriplenstrip-instr1strip“.” next stripleftstripinstr1strip“.”-1 ′IP 地址有效性检验及密码验证,包括两方面的内容: ′如果 IP 地址符合则通过验证;如果 IP 地址不符合则检验输入的密码是否正确此处密码为“
asp” if leftrip5 <> “127.1” or strip<“1” or strip>“50” andrequest“Passwd”<>“
asp” then %> <p><font color“#FF0000”>对不起,你的 IP 是<%rip%>本页面可以访问的 IP 是 127.1.1.*到 127.1.50.*之间,如果你是本单位内部网的用户,请确认你的浏览器没有使用代理<BR></font></p> <form action“demo.
asp” method“POST” idform1 nameform1> <p>请输入访问密码:<input type“password” name“Passwd” ><input type“submit” value“确认” name“B1”> </p> </form> <%else %> ′合法用户可以访问的页面,在此可以加入任何信息 祝贺您,您已经顺利通过了页面的安全认证,可以直接使用本站点的资源 <%end if%> </body> </html> 实际使用只要稍微修改上面的程序如 IP 地址等信息就可以了,当然这只是在一个页面中实现了安全防范功能, 如果一个网站有多个页面的话,可以设置一个 session 变量来对用户进行标志,以在后面的页面中进行判断。
上面只是
ASP 的一个很简单的应用,其实使用
ASP 可以实现许多动态或者其他交互形式的功能,如果您想详细了解
ASP 的用法,可以到具体的
ASP 网站上去参考相关内容。
责任编辑:DawnSummit IISASP 建网站安全性分析随着 Internet 的发展,Web 技术日新月异,人们已经不再满足于静态 HTML 技术,更多的是要求动态、交互的网络技术。
继通用网关接口(CGI)之后,微软推出的 IISASP 的解决方案作为一种典型的服务器端网页设计技术,被广泛应用在网上银行、电子商务、网上调查、网上查询、BBS、搜索引擎等各种互联网应用中。
与此同时,Access 数据库作为微软推出的以标准 JET 为引擎的桌面型数据库系统,由于具有操作简单、界面友好等特点,具有较大的用户群体。
目前,IISASPAccess 是中小型 Internet 网站的首选方案。
但是,该解决方案在为我们带来便捷的同时,也带来了严峻的安全问题。
一、安全隐患分析 IISASPAccess 解决方案的主要安全隐患来自 Access 数据库的安全性,其次在于
ASP网页设计过程中的安全意识和措施。
1.数据库可能被下载 在 IISASPAccess 网站中,如果有人通过各种方法获得或者猜到数据库的存储路径和文件名,则该 数据库就 可以被下载 到本地。
例如:对 于网上书店 数据库, 一般命名为book.mdb、store.mdb 等,存储路径一般为“URL/database”或放在根目录“URL/”下,这样, 任何人敲入地址:“URL/database/store.mdb”, 数据库就可以被下载了。
2.数据库可能被解密 由于 Access 数据库的加密机制比较简单,即使设置了密码,解密也很容易。
该数据库系统通过将用户输入的密码与某一固定密钥(例如: Access 97 为 86 FB EC 37 5D 44 9C FAC6 5E 28 E6 13)进行“异或”来形成一个加密串,并将其存储在.mdb 文件从地址“ampH42”开始的区域内。
我们可以轻松地编制解密程序,一个几十行的小程序就可以轻松地获得任何Access 数据库的密码。
因此,只要数据库被下载,其信息就没有任何安全性可言了。
3.
ASP 页面的安全性 (1)源代码安全性隐患。
由于
ASP 程序采用非编译性语言,大大降低了程序源代码的安全性。
如果黑客侵入站点,就可以获得
ASP 源代码;同时对于租用服务器的用户,因个别服务器出租商的职业道德问题,也会造成
ASP 应用程序源代码泄露。
(2)程序设计中容易被忽视的安全性问题。
ASP 代码使用表单实现交互,而相应的内容会反映在浏览器的地址栏中,如果不采用适当的安全措施,只要记下这些内容,就可以绕过验证直接进入某一页面。
例如在浏览器中敲入“...page.aspx1”,即可不经过表单页面直接进入满足“x1”条件的页面。
因此,在验证或注册页面中,必须采取特殊措施来避免此类问题的产生。
二、提高 IISASP 网站安全性的方法 1.防止数据库被下载由于 Access 数据库加密机制过于简单,有效地防止数据库被下载,就成了提高 ASPAccess解决方案安全性的重中之重。
以下两种方法简单、有效。
(1)非常规命名法。
为 Access 数据库文件起一个复杂的非常规名字,并把它放在几个目录下。
例如,对于网上书店的数据库,我们不把它命名为“book.mdb”或“Store.mdb”,而是起个非常规的名字,例如:faq9jl.mdb,再把它放在如./akkt/kj61/acd/av5 的几层目录下,这样黑客想通过猜的方式得到 Access 数据库文件名就很难了。
(2)使用 ODBC 数据源。
在
ASP 程序设计中,如果有条件,应尽量使用 ODBC 数据源,不要把数据库名写在程序中,否则,数据库名将随
ASP 源代码的失密而一同失密,例如:DBPath Server.MapPath“./akkt/kj61/acd/av5/faq9jl.mdb ”conn.open “driverMicrosoft Access Driver .mdbdbq”amp DBPath可见,即使数据库名字起得再怪异,隐藏的目录再深,
ASP 源代码失密后,也很容易被下载下来。
如果使用 ODBC 数据源,就不会存在这样的问题了:conn.open “ODBC-DSN 名”2.对
ASP 页面进行加密 为有效地防止
ASP 源代码泄露,可以对
ASP 页面进行加密。
我们曾采用两种方法对
ASP 页面进行加密。
一是使用组件技术将编程逻辑封装入 DLL 之中;二是使用微软的 ScriptEncoder 对
ASP 页面进行加密。
使用组件技术存在的主要问题是每段代码均需组件化,操作比较繁琐, 工作量较大,而使用 Encoder 对
ASP 页面进行加密,操作简单、收效良好。
ScriptEncoder 的运行程序是 SCRENC.EXE,使用方法是:SCRENC /s /f /xl /l defLanguage /e defExtension inputfile outputfile其中:/s 是屏蔽屏幕输出;/f 指定输出文件是否覆盖同名输入文件;/xl 指是否在.
asp 文件的顶部添加Language 指令;/l defLanguag 指定缺省的脚本语言 /e defExtension 指定待加密文件的扩展名。
3.注册验证 为防止未经注册的用户绕过注册界面直接进入应用系统,我们采用 Session 对象进行注册验证。
例如,我们制作了下面的注册页面。
设计要求注册成功后系统启动 hrmis.asppage1 页面。
假设,不采用 Session 对象进行注册验证,则用户在浏览器中敲入“URL/hrmis.asppage1”即可绕过注册界面,直接进入系统。
在此,利用 Session 对象进行注册验证:lt’读取使用者所输入的账号和密码UserID Request“UserID”Password Request“Password”’检查 UserID 及 Password 是否正确If UserID ltgt“hrmis” Or Password ltgt“password” ThenResponse.Write “账号错误!”Response.EndEnd If’将 Session 对象设置为通过验证状态Session“Passed” Truegt进.