'or'='or'

对于那些后台验证不严格的登陆验证程序,可以用 'or'='or' 来进行登陆,其原理是绕过后台的数据库查询语句。

示范代码(危险!请勿复制使用!)

Code:
  1. '省略数据库连接等  
  2. Sql="Select Name,grade From user Where Name='" & Request.Form("Name") & "'and Password='" & Request.Form("Password") & "'"  
  3. Rs.Open Sql,Conn  
  4. If Rs.Eof Then  
  5.     Response.Write "用户名或密码错误,请重新登录!"  
  6. Else  
  7.     Session("User")=Rs("Name")  
  8.     Session("Grade")=clng(Rs("Grade"))  
  9.     Rresponse.redirect "index.asp"  
  10. EndIf  
  11. ......  

对于以上的SQL查询,没有对提交的数据进行任何过滤以确保所提交的字符串中不含非法语句,这是很危险的做法!

如果在用户名和密码处都填上 'or'='or' 可以构造出这样的语句

Code:
  1. Select Name,grade From user Where Name=''or'='or''and Password=''or'='or''  

根据逻辑可知 假or假or真 and 假or假or真 的值为真,所以对于这个查询,总能匹配数据表中已有的任意条目

所以程序接下来的登陆判断便不起作用,被成功地绕过了。

其实用 'or' 就可以达到这个效果,但一般会有用户名不得少于n个字符的限制,所以可以加长为 'or'='or' 甚至是 'or'something_here'or' 皆可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值