快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

很多网站把密码放到数据库中,在登陆验证中用以下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、得出结论。
返回类别: 教程
上一教程: 大灰狼的ASP工具箱??用ASP读INI配置文件的函数
下一教程: ASP 3.0高级编程(三十九)

您可以阅读与"ASP程序密码验证问题 (MS,缺陷)"相关的教程:
· ASP进阶教程Ⅶ:留言簿设置密码验证
· ASP与数据库运用:密码验证
· ASP如何更好的解决用户验证问题
· 关于ASP程序中日期型数据的格式问题
· 开发连接远程SQL Server 的ASP程序应注重的问题
    微笑服务 优质保证 索取样品