为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

ASP登录程序易犯的错误

2017-11-29 2页 doc 12KB 7阅读

用户头像

is_731942

暂无简介

举报
ASP登录程序易犯的错误ASP登录程序易犯的错误 在研究Microsoft Site Server的示例项目vcturbo的XT_SHOPPER_LOOKUP.ASP程序时,发现如下语句: sql = "select shopper_id from vcturbo_shopper where email = '" & Replace(shopper_email, "'", "''") & "' and password = '" & Replace(shopper_password, "'", "''" & "'") & "'" 该sql语句就...
ASP登录程序易犯的错误
ASP登录程序易犯的错误 在研究Microsoft Site Server的示例项目vcturbo的XT_SHOPPER_LOOKUP.ASP程序时,发现如下语句: sql = "select shopper_id from vcturbo_shopper where email = '" & Replace(shopper_email, "'", "''") & "' and password = '" & Replace(shopper_password, "'", "''" & "'") & "'" 该sql语句就是提交给服务器进行客户用户名和口令验证的sql语句,用户名就是用户的E-Mail,在 变量shopper_email中,口令在变量shopper-password中. 我发现,总有如下调用:Replace(shopper_email, "'", "''"),Replace(shopper_password, "'", "''" & "'")。这个作用是将输入的用户名和口令中的“'”符号改为“''”,为什么呢?如果不改,去掉 Replace(shopper_email, "'", "''"),直接用shopper_email替换会如何呢? 因为,在以前的程序中,虎虎总是使用如下语句判断用户的合法性的: "select count(*) as num from UserTable where User='" + UserInput + "' and password='" + PwdInput + "'" 判断返回的记录集中的num字段是否大于0,如果大于0,则表示存在该用户,否则显示登录失败信息。 如果去掉Replace(shopper_email, "'", "''"),直接用shopper_email替换,如果用户输入“user'”,口令输入“pwd”,那么sql语句就变成了: select shopper_id from vcturbo_shopper where email = 'user'' and password='pwd' 显然,提交给SQL Server后,会返回错误,但如果用户名输入"user'--",口令输入“pwd”呢?, 那么sql语句就变成了: select shopper_id from vcturbo_shopper where email = 'user'--' and password='pwd' 哈哈,SQL Server成功执行,返回找到了用户user,因为字符“--”对于SQL Server来说,表示 该语句结束了,后面的内容为注释,所以,不用输入口令,也能登录了。 类似的问题还存在,如用户名输入一个存在的用户名,口令输入:“1' OR 1='1 ”。。。 解决的方法很简单,使用Microsoft Site Server的那种Replace(shopper_password, "'", "''" & "'")就可以,当然,如果考虑更加安全,可以过滤掉跟多的字符,如:',",--,-,%,#,@,&,*,),(, :,?,/,\,!,+,|,这些字符都具有特殊的意义。
/
本文档为【ASP登录程序易犯的错误】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索