注册 登录
编程论坛 ASP技术论坛

再问:登陆密码错误,显示源码内容,如何处理?

yinxinhong 发布于 2010-03-22 21:04, 878 次点击
程序代码:
<%
dim username,UserPassword,comeurl,passcode
username
=FormatSQL(replace(trim(request.form("username")),"'",""))
UserPassword
=md5(FormatSQL(replace(trim(request.Form("Password")),"'","")))

if trim(request.form("comeurl"))="" then
comeurl
="index.asp"
else
comeurl
=trim(request.form("comeurl"))
end if
if username="" or UserPassword="" then
response.Write
"<script LANGUAGE='javascript'>alert('登录失败!请检查您的登录名和密码!');history.go(-1);</script>"
response.end
end if

passcode
=request.form("passcode")
if passcode="" then
response.Write
"<script LANGUAGE='javascript'>alert('登录失败!请输入您的验证码!');history.go(-1);</script>"
response.end
end if
passcode
=Cint(request.form("passcode"))
if passcode<>Session("GetCode") then
response.Write
"<script LANGUAGE='javascript'>alert('登录失败!验证码错误!');history.go(-1);</script>"
response.end
end if

set rs=server.CreateObject("adodb.recordset")
sql
="select * from [user] where username='"&username&"' and Password='"&UserPassword&"' "

response.write sql
rs.Open sql,conn,
1,3
if not(rs.bof and rs.eof) then

if UserPassword=rs("Password")  then
response.Cookies(
"Huibo")("username")=trim(request.form("username"))
response.Cookies(
"vip")=rs("vip")
rs(
"Lastvst")=now()
rs(
"loginnum")=rs("loginnum")+1
rs.Update
rs.Close
set rs=nothing
call loginok()
else
response.write
"<script LANGUAGE='javascript'>alert('登录失败,请检查您的登录名和密码!');history.go(-1);</script>"
end if

else
response.write
"<script LANGUAGE='javascript'>alert('登录失败!请检查您的登录名和密码!');history.go(-1);</script>"
end if
sub loginok()
response.Write
"<font size=2>欢迎  <font color=red size=2>"&request.Cookies("Huibo")("username")&"</font>,光临两秒种后将自动跳转到相应页!</font>"
response.redirect comeurl
end sub
conn.close
set conn = nothing
%>
代码如上述
密码正确能正常登陆
当密码错误的时候居然显示[select * from [user] where username='输入的用户名' and Password='输入的密码(加密后的)']
请问:如何处理,不显示?
6 回复
#2
icecool2010-03-22 22:25
response.write sql
你第30行搞这一句当然会显示,就是登陆成功这一句也显示着,只不过页马上跳转了.



 
 
#3
cnfarer2010-03-23 08:01
楼上说得对,另外提醒一下,你的程序存在SQL注入风险!
#4
yinxinhong2010-03-23 08:36
呵呵,看回帖之前已经解决了,删除了response.write sql,不过依然谢谢
3楼版主说程序存在SQL注入风险,该怎么办?
#5
chenguoxing5172010-03-23 13:40
加入防sql注入功能,防止get,post,cookie三种方式
#6
cnfarer2010-03-23 14:27
回复 4楼 yinxinhong
这个百度一下就行了!
#7
czyzhuo2010-03-25 09:40
学习了一下,呵呵。。

什么是SQL注入攻击——所谓的SQL注入攻击就是利用SQL语句通过网页(通常是80端口)向web服务器发送特定的请求以期获得服务器上的某些敏感信息或者是执行某些越权操作的一种攻击方式。

SQL注入漏洞存在的条件——存在SQL注入漏洞的网页通常应该满足两个条件:动态页面(静态的HTML网页是不存在这个风险的)和数据库调用。因此可能存在SQL注入漏洞的网站也应该满足两个条件,一是使用动态的网页脚本语言开发,二是后台有支持SQL语句的数据库存在。目前比较常规的搭配有ASP+Access、ASP+SQLServer、PHP+Mysql、JSP+Oracle等。

什么样的网站可能存在风险?
1、使用了网上开放源代码的程序搭建的动态网站。这种网站存在SQL注入的风险最大,因为公开的源码非常容易被人发现注入点从而进行攻击。
2、委托其他人开发的动态网站代码,而开发人目前已经不再对网站的代码进行更新。这类网站也存在很大注入风险。
3、管理员自己开发的网页代码,并且自己维护。这类站点的风险较小,但是依然存在有被SQL注入攻击的可能。

防火墙能否防范SQL注入攻击?
不能,因此这类攻击都是通过合法的通道提交的,防火墙是无法判断这类攻击是真实的访问请求还是恶意攻击的。  

我的网站到现在也没有被攻击过是否就表明我的网站不存在SQL注入漏洞?
由于SQL注入这种攻击方式存在很大的随机因素(需要攻击者不断与服务器进行交互判断),它并不适合被编写成自动的攻击脚本程序。因此你的网站还没有被攻击并不表示不存在这个漏洞,很多时候仅仅是因为入侵者还没有意愿要攻击您的网站。

如何检查我的网站是否存在SQL注入漏洞?
前面说了我们很难编写出一个通用的全自动SQL注入攻击程序,那么我们也没有一个全自动的扫描该漏洞的程序。大多数时候还是需要我们的网站管理员去手动检查相应的网页代码来判断漏洞是否存在。
1