帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP编程
ASP程序密码验证漏洞
作者: 发布时间:2005-03-12 来源:
这个漏洞其实是很多网站都存在的,特别是提供用ASP编写的聊天室,BBS等(其它的语言我不懂,但我想也会存在这方面
的洞的。)。

一般来说,我们在验证用户是否合法时,会用如下的语句:

set db=server.CreateObject("ADOdb.recordset")

sqlstr=select * from table where user='"&request("user")&"' and password='"&request("password")&"'"

db.open sqlstr,"DSN=aa;",1然后检测得到的表是否为空,如果为空则用户非法,如果不为空则用户是合法的。

if db.eof and db.bof then

ok="no"

else

ok="yes"

end if这段程序单从技术角度看规范的,但从安全角度看就存在一个非常大的洞。因为我们可以构造一个特殊的用户
口令和用户名从而进入受保护的系统内部。

user='aa' or user<>'aa'

password='aa' or password<>'aa'

相应的在浏览器端的用户名框内写入:aa' or user<>'aa

口令框内写入:aa' or password<>'aa,注意这两个字符串两头是没有'的。

这样就可以成功的骗过系统而进入。

理论虽然如此,但要实践是非常困难的,下面两个条件都必须具备。

1.你首先要能够准确的知道系统在表中是用哪两个字段存储用户名和口令的,只有这样你才能准确的构造出这个进攻
性的字符串。实际上这是很难猜中的。

2.系统对你输入的字符串不进行有效性检查。

从这儿可以看出源码泄露的漏洞有时是致命的!!

我想出的解决办法:

1.就象yexiaolu所说的,分开写,可以看看他的贴子。

2.将存储用户名和用户口令的字段取两个毫不相干的名字,让攻击者猜不中。

3.对用户输入的数据进入有效性检查,如替换掉'等。

4.可以考虑对口令进行简单的加密,如将输入的口令字符串变换一下字符串中字符的位置等都可以有效的防止这种进
攻。

5.最重要的一点,不要泄露你的源码!!!!
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·已调试好的asp程序在VB中转换为组  (2005-03-12)
 ·开发连接远程SQL Server 的ASP程  (2005-03-12)
 ·一个查看ASP的JavaScript程序,方  (2005-03-12)
 ·使用VB编写纯ASP程序  (2005-03-12)
 ·如何使ASP程序暂停指定的时间后再  (2005-03-12)
 ·已调试好的asp程序在VB中转换为组  (2005-03-12)
 ·用asp程序显示sql数据库所有表的  (2005-03-12)
 ·一个查看ASP的JavaScript程序,方  (2005-03-12)
 ·利用sql的存储过程实现dos命令的  (2005-03-12)
 ·asp程序和php程序转换要注意的问  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·在ASP中使用数据库
·使用ASP脚本技术
·通过启动脚本来感受ASP的力量
·学习使用ASP对象和组件
·解析asp的脚本语言
·初看ASP-针对初学者
·ASP开发10条经验总结
·ASP之对象总结
·ASP与数据库应用(给初学者)
·关于学习ASP和编程的28个观点
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统