只是刚好喜欢你:分析ASP中 识别URL代码

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 12:26:22
接触ASP不久,不是非常熟悉。请大家帮忙 分析以下代码详细意思:

1.目前,用户文件夹index.aps中有以下代码,
当:URL中的/?id=正确用户名时,顺利转入用户网站;
当:url:中的/?id=错误用户名,系统提示“非法访问”自动返回首页
< %dim id
id=request.QueryString("id")
if not isinteger(id) then
response.write"<script>alert(""非法访问!"");location.href=""../index.asp"";</script>"
end if
set rs_shjia=server.CreateObject("adodb.recordset")
strshjia="select * from shjia where username='"&id &"'"
rs_shjia.open strshjia,conn,1,1
if rs_shjia.bof and rs_shjia.eof then
response.write"<script>alert(""非法访问!"");location.href=""../index.asp"";</script>"
end if
% >

2.另一.asp文件中,只有以下代码,如下:
当:URL中的/?id=正确用户名时,顺利转入用户网站;
当:url:中的/?id=错误用户名,系统自动返回首页
< %
id=request("id")
dim rs,sql
set rs = Server.CreateObject("ADODB.Recordset")
sql="select * from shjia where username ='"&id&"'"
rs.open sql,conn,3,2
if rs.eof and rs.bof then
response.write "<script language='javascript'>"
response.write "alert('该用户不存在,请检查输入是否正确!');"
response.write "</script>"
response.redirect"index.asp?id="&webname&""
response.end
else
rs("count") = rs("count") + 1
rs.Update
if rs("aaa")=0 or rs("eee")=0 then
response.redirect"temporary.asp?id="&id&""
response.end
end if
end if
% >

问题:

1.代码1中的not isinteger是非法参数么?是从哪里获取哪里的?
2.代码1中,上半部分和下半部分,都有相同之处:alert(""非法访问!""),请问URL错误时执行哪一部分,正确时,又是如何执行?

3.代码2是一个完整的.asp文件,id=request("id")是的request读取的是哪里的ID?
4.代码2中,if rs.eof and rs.bof then的时候,系统会提示('该用户不存在,请检查输入是否正确!');";反之,将转入"temporary.asp?id="&id&",是么?

5.代码1与代码2合并在代码1的index.asp文件中,其中代码2以< !--#include file="pass.asp"-->形式出现在index.asp文件中(代码2文件名为pass.asp);代码1仍然保留在<body >下的位
当:用户名正确时,可以正常转入用户页面,
当:用户名错误时,是该页无法显示,为什么?
所以请专家帮忙详细分析一下以上代码的详细意思,谢谢

.

1.代码1种isinterger是asp的一个函数,不是从哪里获取的是判断id是不是一个整形量的函数,not是个运算符,是逻辑非的运算符。

2.上半部分是判断提交的id是不是一个整数,如果不是整数,说明有问题,提示非法访问,如果是整数的话,还要判断数据库里究竟有没有这个id,如果有的话不操作,没有的话,提示非法访问。

3.request("id")是一个通用写法是request.querystring("id")和request.forms("id")之中其一,如果只有一个存在,则就是那一个,如果两个都存在,则取querystring。

4.系统提示过用户不存在后,会跳回index.asp,否则会跳到temporary.asp

5.没法看出来为什么"该页无法显示",可能是路径错误,请详查

1、not isinteger=非整数
2、两处是不同的方法,第一个是非整数的时候直接就kill掉了,是为了防止sql注入的办法之一;另一个是查询数据后的结果,如果数据库里没有该id则也视为非法登陆
3、id=rquest("id")是典型的post提交的数据,此处id是另一个form里提交的。
4、基本正确
5、pass.asp是访问计数的代码,是用来记录某id的访问量的,所以如果该id不存在,,则不记录点击数,并且提示非法访问,没有什么更多的东西。

补允一下,第五个问题,这个pass.asp还是有很多疏漏的,去掉安全方面的因素,就是执行上的容错也是不完善的。如果只是学习还可以,如果用来做服务的话,建议你另寻代码吧,基本上这个程序靠不住。