首页 实地培训 VIP专区 文章中心 下载中心 精品动画 安全服务 安全产品 企业文化
技术论坛
 -->开创网络首先基于以学员为中心的人性化教学方式。以案例式教学、互动式教学为主线。
 
  当前位置: 首页 > 文章中心 > 黑客技术 >
 
 
有关饶过后台验证or 1=1等问题研究
发布者ID:3 作者: 发布时间:2008-04-05 02:29:41 来源: 点击:
 

在ASP登陆验证页面中,接收用户输入的用户名和密码的认证,通过和数据库中的信息做比较来实现验证,例如
sql="select * from admin where username="&user&" and password="&pwd&"" 
 
很多程序都会这么写,但是仔细考虑后就会发现不妥之处。 
  
如果username的值和password的值用or来混入:
例如:   indus' or '1'='1'   
这时查询就会变成这个样子: select * from admin where username='indus' or '1'='1'  and pass='indus' or '1'='1' 
虽然其中indus 这个用户不存在,但是查询使用了or ,也就是满足其中一个条件就成立,因为后面的  '1'='1'   是成立的,因此整个语句就为真了.
也就是所谓的饶过了原来的验证.举个例子,今天在某网站看到的. 使用测试语句

发现没有成功,仔细看后面多了个多余的 '

这次通过了验证,看到了受保护的页面new.asp

其实只要对用户输入的数据进行严格过滤就可以解决。
例子: 
  <% 
  user=request.from("username") 
  pass=request.from("password") 
  for i=1 to len(username) 
  cl=mid(username,i,1) 
  if cl="" or us="%" or us="<" or us=">" then 
  response.redirect "含有不合法的字符不能提交" 
  response.end 
  end if 
  next 
  %> 


先取得用户输入数据,然后分析用户输入的每一个字符,如发现异常,则转到错误页面。 
if cl="" or us="%" or us="<" or us=">" then 这一句中过滤敏感字符,在数据ASP后缀名的数据库提交中可以防止写入一句话木马.
也可以用replace来进行过虑
username=replace(trim(request("username")),"'","")     '把单引号过滤为空格
password=replace(trim(Request("password")),"'","")   '把单引号过滤为双引号


当然如果你想用“ '”当做密码 就用下面的方法
1、"select * from user where user=' " & User & " ' " 
2、如果返回不为假,则取密码  pass=rs("passwd") 
3、判断:if pass=password 
4、得出结论。 


例子:
sql="select * from admin where admin_pass=' "&admin_pass&" ' and admin=' "&admin&" ' "
rs.open sql,conn,1,3
if not(rs.bof and rs.eof) then
if admin_pass=rs("admin_pass") then
session("admin")=rs("admin")



 
 
 
 
   
 
   
     
  • 课堂实景
  • 课程体系
  • 培训课程
  • 学费介绍
  • 巧用mstsc命令登录到console的方法
  • 课程介绍
  • 团队介绍
  • Linkideo免费Vpn
  • 就业前景
  • 汇款方式
  •  
     
     
    无标题文档
    一流开创网一流开创网一流开创网一流开创网一流开创网一流开创网一流开创网
      关于我们 | 联系方法 | 招聘信息 | 加入会员 | 诚征代理 | 广告服务 | 欢迎投稿 | 友情链接  
      版权所有:吉林省开创科技信息有限公司  
      服务热线:0431-84714442
    Copyright 2001 - 2007 All Rights Reserved