ASP管理员登录如何过漏用户输入特别字符

<%
response.buffer=true '启用缓冲处理

dim conn
dim connstr
'on error resume next
connstr="DBQ="+server.mappath("/data/qiao#ban@1#2@3#4!.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "数据库连接出错,请检查数据库连接文件中的数据库参数设置。"
Response.End
End If
sub Chkhttp()
server_vv=len(Request.ServerVariables("SERVER_NAME"))
server_v1=left(Cstr(Request.ServerVariables("HTTP_REFERER")),server_vv)
server_v2=left(Cstr("http://"&Request.ServerVariables("SERVER_NAME")),server_vv)
if server_v1<>server_v2 or server_v1="" or server_v1="" then
response.Charset="utf-8"
response.write("<script>alert('错误:禁止从站点外部提交数据!.')</script>")
response.end
end if
end sub
%>

是在conn.asp这个文件添加吗?
那应该怎样做呢?

<%
'==================================================
'防注入代码部分
'==================================================
Dim Fy_Url,Fy_a,Fy_x,Fy_Cs(),Fy_Cl,Fy_Ts,Fy_Zx
'---定义部份 头------
Fy_Cl = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向
Fy_Zx = "index.asp" '出错时转向的页面
'---定义部份 尾------
On Error Resume Next
Fy_Url=Request.ServerVariables("QUERY_STRING")
Fy_a=Split(Fy_Url,"&")
Redim Fy_Cs(UBound(Fy_a))
On Error Resume Next
For Fy_x=0 To UBound(Fy_a)
Fy_Cs(Fy_x) = Left(Fy_a(Fy_x),Instr(Fy_a(Fy_x),"=")-1)
Next
For Fy_x=0 To UBound(Fy_Cs)
If Fy_Cs(Fy_x)<>"" Then
If Instr(LCase(Request(Fy_Cs(Fy_x))),"'")<>0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),"and")<>0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),"select")<>0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),"update")<>0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),"chr")<>0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),"delete%20from")<>0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),";")<>0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),"insert")<>0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),"mid")<>0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),"master.")<>0 Then
Select Case Fy_Cl
Case "1"
Response.Write "<Script Language=JavaScript>alert(' 出现错误!参数 "&Fy_Cs(Fy_x)&" 的值中包含非法字符串!\n\n 请不要在参数中出现:and,select,update,insert,delete,chr 等非法字符!\n\n我已经设置了不能SQL注入,请不要对我进行非法手段!');window.close();</Script>"
Case "2"
Response.Write "<Script Language=JavaScript>location.href='"&Fy_Zx&"'</Script>"
Case "3"
Response.Write "<Script Language=JavaScript>alert(' 出现错误!参数 "&Fy_Cs(Fy_x)&"的值中包含非法字符串!\n\n 请不要在参数中出现:,and,select,update,insert,delete,chr 等非法字符!\n\n设计了门,非法侵入请离开,谢谢!');location.href='"&Fy_Zx&"';</Script>"
End Select
Response.End
End If
End If
Next
%>
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-12
把需要过滤的特殊字符集中到一个数据或者字符串,然后用输入去匹配数组中每一个特殊字符, 至于这个过滤最好是在有数据提交的地方判断本回答被网友采纳
第2个回答  2010-11-13
你可以用replace替换函数

Replace()
功能将一个字符串中指定个数的字符串替换为另一个字符串。
语法Replace ( string1, start, string2,n,m )
参数string1:string类型,指定要使用string2替换其中一部分内容的字符串;
参数start:long类型,指定要从哪个字符位置开始替换字符串,字符串中第一个字符的位置为1;
参数n:long类型,指定要替换开始字符起始位置,从左到右;
参数m:int类型,指定要替换字符串的次数,1 代表替换一次;
参数string2:string类型,指定用哪个字符串替换string1的部分字符返回值String。函数执行成功时返回替换后的字符串,发生错误时返回空字符串("")。如果任何参数的值为NULL,Replace()函数返回NULL。用法如果start参数指定的位置超过了string1的长度,那么Replace()函数把将string2拼接到string1的后面形成的字符串返回。
在ASP中Replace的语法为:Replace("字符串","要被替代的字符串","替代后的字符串","开始字符位置","替换次数")
替换指定的次数.

在ASP中vbscript 的Replace的语法为:Replace("字符串","要被替代的字符串","替代后的字符串")
vbscript中replace()详细说明:
功能:在字符串中查找,替代指定的字符串.
格式:replace(strtobesearched,strsearchfor,strreplacewith [,start[,count[,compare]]])
参数:strtobesearched是字符串; strsearchfor是被查找的子字符串;strreplacewith 是用来替代的子字符串.start,count,compare 是任意选项.
例子:
<%
strtest=“this is an apple.”
response.write replace(strtest,”apple”,”orange”)
%>
结果:this is an orange.
XP有一个很无敌的命令----很有用
用来替换文件的replace,连正在使用的文件也能替换。非常无敌。
比如:在C:\下建一个目录,c:\aaa
然后复制一首mp3到c:\aaa并命名为c:\aaa\a.mp3
然后再复制另一首歌到C:\a.mp3
然后用media player 播放c:\aaa\a.mp3
在命令提示符下输入:replace c:\a.mp3 c:\aaa
过一会,是不是播放的歌已变为另一首。
用这个命令来替换系统文件真是太爽了,并且XP的系统文件保护也对它无效。
再也不用到安全模式下去替换文件了
格式
REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [/P] [/R] [/W]
REPLACE [drive1:][path1]filename [drive2:][path2] [/P] [/R] [/S] [/W]
[drive1:][path1]filename 指定源文件。
[drive2:][path2] 指定要替换文件的
目录。
/A 把新文件加入目标目录。不能和
/S 或 /U 命令行开关搭配使用。
/P 替换文件或加入源文件之前会先提示您
进行确认。
/R 替换只读文件以及未受保护的
文件。
/S 替换目标目录中所有子目录的文件。
不能与 /A 命令选项
搭配使用。
/W 等您插入磁盘以后再运行。
/U 只会替换或更新比源文件日期早的文件。
不能与 /A 命令行开关搭配使用
相似回答