ASP程序密码验证问题

程序|问题

涉及程序:
MS IIS

描述
国内一大学生发现的NT网站的ASP程序密码验证漏洞

详细
来自: benjurry@263.net
原文如下:

很早就发现很多国内程序员对密码验证不注意,今天去了陈水扁(www.abian.net)的网沾,随手一试,居然发现有这种漏洞,真是让人笑破肚皮!
原理:
很多网站把密码放到数据库中,在登陆验证中用以下sql,(以asp为李)
sql="select * from user where username='"&username&"'and pass='"& pass&'"
此时,您只要根据sql构造一个特殊的用户名和密码,如:ben' or '1'='1
hehe ...是不是进去了??

-----------------------------------------------------------------------

解释:
上述的SQL语句是ASP程序的if判断的一部分,如果该语句返回为真,则密码验证通过。
输入 ben' or '1'='1这样的用户名之后,其验证的语句将执行为:
sql="select * from user where username='"& ben' or '1'='1 &"'and pass='"& pass&'"
因为1=1为真,由于 or 逻辑运算符的作用,这个语句将返回为真。
所以验证通过。

解决方案
ASP程序员应该用更严密的判断语句来防止这个安全问题
下面是发现者提出的解决方案:
比较好的应该按照以下方式:
1、处理输入字符,
2、处理‘,|等字符
3、select * from user where user=’ " & User & "' "
4、如果返回不为假,则取密码
pass=rs("passwd")
5、判断:if pass=password
6、得出结论。

时间: 2024-11-17 17:06:56

ASP程序密码验证问题的相关文章

ASP程序密码验证问题 (MS,缺陷)

涉及程序: MS IIS   描述 国内一大学生发现的NT网站的ASP程序密码验证漏洞   详细 来自: benjurry@263.net原文如下: 很早就发现很多国内程序员对密码验证不注意,今天去了陈水扁(www.abian.net)的网沾,随手一试,居然发现有这种漏洞,真是让人笑破肚皮!原理:很多网站把密码放到数据库中,在登陆验证中用以下sql,(以asp为李)sql="select * from user where username='"&username&&q

ASP程序密码验证漏洞解决方案

         网站建设初期,很多网站把密码放到数据库中,在登陆验证中用sql="select * from user where username='"&username&"'and pass='"& pass &'"查询用户名.密码,这种是很不安全的. 解决办法:构造特殊用户名和密码 方法一 构造以下的用户名: username='aa' or username<>'aa' pass='aa' or pas

ASP与数据库运用:密码验证

数据|数据库 文/龙儿 (2000/10/30 ) Microsoft 的大作ASP(Active Server Pages)以其易学易用.扩充性好.功能多而强等优点正掀起一场新的web编程革命(从严格意义上讲,编写asp并不是编程),它以令人吃惊的发展和普及速度大有取代由perl等语言编写的CGI(Common Gateway Interface,通用网关接口) 的势头.基于web page方式的web管理模式已经成为潮流,看看现在的网管们,有谁不会asp的编写呢?要管理?那你可能就要用到我这

用ASP的安全验证来对windows 2000的管理者密码进行在线修改

window|安全|在线 IIS的安全验证机制做得很好,我们可以用ASP的安全验证来对windows 2000的管理者密码进行在线修改. 当有人登录站点时,利用ServerVariables集合中的LOGIN_USER捕获登录帐号,前提是必须关闭IIS中允许匿名登录这个选项,然后在changepwd.asp文件中通过ADSI来修改密码. 以下是程序: changepwd.htm <body> <!--与该输入表单有关的客户端验证脚本(即不允许新密码为空和两次密码输入是否相等的判断)请自行

带数据库的ASP用户名密码登录验证代码

  带数据库的ASP用户名密码登录验证代码,这个代码里有登录判断的完整逻辑,包括连接数据库,查询判断用户名和密码是否正确,返回重填,关闭数据库记录集等,对ASP初学者有相当好的借鉴价值: 这里连接的是SQLSERVER数据库,数据库就不上传了,里面有两个字段,name是存储用户名,userpassword是密码字段,自己手动创建个,修改本代码里面的数据库连接信息就可测试了.

[华为机试练习题]31.密码验证合格程序

题目 描述: 密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 3.不能有相同长度超2的子串重复 说明:长度超过2的子串 题目类别: 字符串,数组 难度: 中级 运行时间限制: 10Sec 内存限制: 128MByte 阶段: 入职前练习 输入: 一组或多组长度超过2的子符串.每组占一行 输出: 如果符合要求输出:OK,否则输出NG 每行输出对应一组输入的结果: 样例输入: 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000

javascript 密码验证程序

javascript教程 密码验证程序 下面的检查功能,密码字段为空白,只允许字母和数字 - 这一次没有underscopes.因此,我们应该使用一个新的正则表达式来禁止underscopes.这1 / [ W_] /只允许字母和数字.下一步,我们要允许包含字母和数字至少1只密码.为此,我们使用seacrh()方法和两个正则表达式:/(亚利桑那州)+ /和/(0-9)/. function validatePassword(fld) {     var error = "";    

asp.net (C#)登陆用户名和密码验证,用dr.Read()方法会出现大小写不区分!!(例如:我注册了大写账号,用小写账号也可以登陆).求各位大神帮我解答

问题描述 asp.net(C#)登陆用户名和密码验证,用dr.Read()方法会出现大小写不区分!!(例如:我注册了大写账号,用小写账号也可以登陆).求各位大神帮我解答!! 解决方案 解决方案二:你的代码贴出来解决方案三:SQLServer数据库??如果是,那应该不是asp.net(C#)的原因,是数据库的原因,SQLServer不区分大小写.解决方案四:谁知道你是什么方法做的验证呀解决方案五:mssql可以配置是否区分大小写,这不是c#的问题解决方案六:这里只用dr.Read()方法验证判断了

js入程序:密码验证登陆程序

js入程序:密码验证登陆程序 <% /*dim ComeUrl,cUrl ComeUrl=lcase(trim(request.ServerVariables("HTTP_REFERER"))) if ComeUrl="" then  response.write "<br><p align=center><font color='red'>对不起,为了系统安全,不允许直接输入地址访问本系统的后台管理页面.<