您现在的位置: PQ秀秀网 >> PQ知道 >> 正文 用户登录 新用户注册
看了一篇asp安全的文章,有一个sql的问题不明白,谢谢! Web 开发 / ASP
作者:佚名    文章来源:不详    点击数:加载中...    更新时间:2008-7-12 字体:[ ]
添加到收藏: 添加到百度收藏  收藏到QQ书签  添加到雅虎收藏  添加到新浪ViVi  添加到天极网摘  添加到和讯网摘

看了一篇asp安全的文章,有一个sql的问题不明白,谢谢!

楼主tianxueer(甜雪儿)2006-12-21 20:34:21 在 Web 开发 / ASP 提问

select   a,b   from   c   where   a=''or'1'='1'   and   b=''or'1'='1'  
   
  文中的意思是说直接返回真,是在看不懂。  
  or怎么能那么写?  
  谢谢!  
  原文:http://blog.csdn.net/aspstu/archive/2005/01/11/249321.aspx 问题点数:20、回复次数:8Top

1 楼dxef(丁学)回复于 2006-12-21 20:39:19 得分 2

a=''   --结果不定  
  a=''   or   '1'='1'   --结果肯定为真  
  后面一样  
  其实不管前面是什么,因为是从前往后计算,最后一个   or   '1'='1'   足以使整个条件返回真Top

2 楼tianxueer(甜雪儿)回复于 2006-12-21 20:54:46 得分 0

dxef(丁丁)   ,还是不明白,  
  or怎么能这么用呢?  
  不是:  
  "条件1   or   条件2"   吗?  
  or   '1'='1'是什么意思?  
   
  还有,原文好像是:   'or'1'='1  
  而不是   or   '1'='1'?  
   
  Top

3 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2006-12-21 21:01:57 得分 1

无所的,其实就是注入攻击。。。n多年前玩烂掉的东西Top

4 楼dxef(丁学)回复于 2006-12-21 21:32:34 得分 1

N年前就烂掉的东西,可惜大部分开始学WEB编程的人还是会犯,初学者,还是ASP的天下啊Top

5 楼tianxueer(甜雪儿)回复于 2006-12-21 21:57:30 得分 0

我明白了!  
  是不是这样看:a=''or'1'='1'(判断a是否等于'',就是空白,否则'1'='1',又因为1=1,所以返回真)    
  对吗?Top

6 楼pzhuyy(喝小酒泡尼姑)回复于 2006-12-21 21:59:59 得分 2

反正最后始终都会返回真的:)Top

7 楼zhblue(http://www.newsclan.com)回复于 2006-12-21 22:03:48 得分 1

汗!  
  1=1  
  想起陈景润Top

8 楼plought()回复于 2006-12-21 22:28:45 得分 13

楼主看到的只是一个逻辑教学实例,我曾经给学生讲课的时候用过!且命名为“万能钥匙”  
   
  有一个网站的用户登录程序中,用简单的比较方法验证会员注册身份(即:比较用户输入的密码和数据库中保存的密码是否一致。假设这个程序的SQL查询语句如下:  
  select   name   from   [TABLENAME]   where   name='"&uanme&"'   and   paswd='"&upaswd&"'"  
   
  name,paswd分别是数据库表的用户民和密码字段  
  uname,upaswd分别是用户登录时输入的名字和密码字符串  
   
  如果用户输入的名字是“a   or   1=1”  
  如果用户输入的密码是“b   or   0=0”  
  单看比较运算表达式:name=a   or   1=1   and   paswd=b   or   0=0"  
  语句符合逻辑,结果成立,非法登录成功!  
   
  实际几乎不会发生这样的故事,实例只是为了说明abd   or之类的逻辑关键字的功能,和ASP字符明文程序中逻辑设计的重要性。  
   
   
   
   
   
   
   
  Top

文章录入:andy    责任编辑:andy 
  网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
  • 没有热点文章
  • 没有推荐文章