也谈ASP技术实现站点加密
2008-02-23 05:31:32来源:互联网 阅读 ()
文中所给出的数据验证代码是通过“SELECT * FROM customer WHERE cust_id=′ ″ & request(″uid″) & ″ ′ and ′cust_pwd=′ ″ & request(″pwd″) & ″ ′ ″,并且判断此SQL语句返回的记录集是否为空来确定登录是否失败。其问题出在没有对收集到的uid信息和pwd信息进行任何预处理,从而使得用户能够在输入用户名和密码的时候使用“'”这个SQL的分隔符号,因此用户能够构造出这样的用户名和密码:uid=″ABC′ or ′1′=′1″,pwd=″ABC′ or ′1′=′1″。然后文中的数据验证部分会生成这样的一个SELECT语句并交由SQL Server执行:″SELECT * FROM customer WHERE cust_id=′ABC′ or ′1′=′1′ and cust_pwd=′ABC′ or ′1′=1′ ″。其返回的结果跟直接使用“SELECT * FROM customer”完全相同,返回全部的用户记录,所以后面的gbFound就会成为True,然后文中的系统会取出rsCust.Fileds(“cust_id”)和rsCust.Fileds(“cust_pwd”)存入Session变量中,也就是说取出了全部用户记录中的第一个用户的信息存入Session。至此,咱们这个没有任何授权的用户就已取得了跟第一名合法用户完全相同的身份了。
一个真正可靠的ASP验证页面应该拥有数据预处理部分和多数据结果的补充验证,下面给出一个可靠的ASP验证代码:
〈%@ Language=VBScript%〉
〈%
Dim myDSN
dim na,pass
′下面是连接代码
MyDSN = ″DSN=HotFoxDB;uid=superuser;DATABASE=HotFoxDB;pwd=″
′取得用户提交的用户名和密码
na=trim(request.form(″name″))
pass=trim(request.form(″password″))
′数据预处理,检测输入中是否存在 ′ 符号
if (instr(na,″ ′ ″)〈〉0 or instr(pass,″ ′ ″)〈〉0) then
′假如有非法字符,转到登录失败页面
Response.Redirect(″LogFail.HTM″)
end if
′执行常规的SQL数据验证
mySQL=″select * from userprofile where name=′ ″ & na & ″ ′ and pwd=′ ″ & pass & ″ ′ ″
set rstmp = Server.CreateObject(″ADODB.Recordset″)
rstmp.Open mySQL,myDSN,3
′检测是否返回多个数据记录
if rstmp.recordcount〈〉1 then
′假如符合条件的记录不止一个,转到登录失败页面
Response.Redirect(″LogFail.HTM″)
else
′成功登录的处理部分
session(″username″)=trim(rstmp.fields(″name″))
session(″userdomain″)=trim(rstmp.fields(″domain″))
session(″useraction″)=trim(rstmp.fields(″action″))
rstmp.Close()
set rstmp=nothing
Response.Redirect(″Main.HTM″)
end if
%〉
另外前文作者提出的在每个页面开头使用那段代码来验证的方法,最好应该改为使用INCLUDE,从而加快处理速度,并避免每个页面的头部过于冗长。具体方法是将那段代码单独存为一个Certify.ASP,然后每个页面开头加入〈!--#INCLUDE FILE=″Certify.ASP″--〉就能够了。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 在ASP中使用存储过程
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash