Replace(expression,find,replacewith[,compare[,count[,start]]])
参数说明
expression:必选。字符串表达式包含要替代的子字符串。
find:必选。被搜索的子字符串。
replacewith:必选。用于替换的子字符串。
start:可选。expression中开始搜索子字符串的位置。如果省略,默认值为1。
count:可选。执行子字符串替换的数目。
compare:可选。指示在计算子字符串时使用的比较类型的数值。
运行结果如图6.12所示。
图6.12 应用Replace()函数替换字符串中的危险字符
(1)定义Replace()函数,用于替换字符串中的危险字符。代码如下:
<%
function filter_Str(InString)
NewStr=Replace(InString,"'","''")
NewStr=Replace(NewStr,"<","<")
NewStr=Replace(NewStr,">",">")
NewStr=Replace(NewStr,"chr(60)","<")
NewStr=Replace(NewStr,"chr(37)",">")
NewStr=Replace(NewStr,"""",""")
NewStr=Replace(NewStr,";",";;")
NewStr=Replace(NewStr,"--","-")
NewStr=Replace(NewStr,"/*"," ")
NewStr=Replace(NewStr,"%"," ")
filter_Str=NewStr
end function
%>
(2)在需要进行字符替换的位置应用filter_Str()函数。代码如下:
<!-- #include file="filter.asp" -->
<% session.Timeout=120
if request.Form("UserName")<>"" and request.Form("PWD")<>"" then
session("UserName")=filter_Str(request.Form("UserName"))
session("PWD")=filter_Str(request.Form("PWD"))
sql="select name,password from Tab_user where Name='"&session("UserName")&"'"
set rs=conn.execute(sql)
if rs.eof then %>
<script language="javascript">
alert("您输入的管理员 名称错误,请重新输入!");
</script>
<%session.Abandon() '删除所有存在Session对象中的对象
else
if rs("password")=session("PWD") then
session("flag")="登录" %>
<script language="javascript">
alert("登录成功!!")
window.location.href="index.asp"
</script>
<%else%>
<script language="javascript">
alert("您输入的管理员密码错误,请重新输入!");
history.back();
</script>
<%session.Abandon()
end if
end if
end if
%>