进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 网站开发 -> ASP -> 文章内容  
初学ASP编程易犯的一个错误要注意

在ASP编程中,身份认证可以说是常要用到的。但怎么样才能做到认证的安全呢?

    表单提交页面:sub.htm

<html>
    <head>
    <title>管理员登陆</title>
    <body>
    <form name="form1" method="post" action="sub.asp">
    <p> 管理员:
    <input type="text" name="UserID" size="25" maxlength="20">
    密 码:
    <input type="text" name="Pass" size="12" maxlength="20">
    <input type="submit" name="Submit" value="提交">
    </p>
    </form>
    </body>
    </html> www.goodsgy.com


    SUB.asp程序

    <%
    接收表单中的数据
    user=request.from("UserID")
    检察表单提交的数据是否为空(表单页面可能你用JAVASCRIPT OR VBSCRIPT控制了,但这里也不要忘记控制!
    if user="" then
    转到出错提示页面!
    response.redirect "err1.htm"
    这一句可能没用,但加上为好!
    response.end
    end if
    pass=request.from("Pass")
    if pass="" then
    response.redirect "err2.htm"
    response.end
    end if
    联接数据库
    file=server.mappath("你的数据库")
    set conn=server.createobject("adodb.connection")
    dr="driver={microsoft access driver (*.mdb)};dbq="&file
    conn.open dr
    set rs=server.createobject("adodb.recordset")
    关键是这里的SQL语言
    sql="select * from 表 where user= "&user&" and pass= "&pass&" "
    rs.open sql
    if not rs.eof then
    找到的话就进入管理页面
    reponse.redirect "login.asp"
    else
    没找到就进入错误页面
    response.write "err3.htm"
    end if
    %> www.goodsgy.com


    大家感觉以上代码应该没问题啊,但是这里有一个严重的安全隐患:www.goodsgy.com

    我如果想登录管理员的话可以在SUb.htm表单输入框中输入: www.goodsgy.com

    第一个文本框中输入:a or 1 = 1 或 OR = www.goodsgy.com

    第二个文本框中输入:a or 1 = 1 或 OR = www.goodsgy.com

    提交,大家会看到...“呜,听我说完好不好,砖头一会再丢过来..." www.goodsgy.com

    "a " 和“1”为任意字符 www.goodsgy.com

    有人会问为什么你输入这些字符会以管理员身份进入呢?? www.goodsgy.com

    其实这些字符是对你程序中SQL语言的欺骗,而成功进入的 www.goodsgy.com

    大家看:开始程序SQL中是对表进行查询满足user= "&user&" and pass= "&pass&" "条件的记录 www.goodsgy.com

    sql="select * from 表 where user= "&user&" and pass= "&pass&" " www.goodsgy.com

    我而输入上面的代码后就成了: www.goodsgy.com

    sql="select * from 表 where user= a or 1 = 1 and pass= a or 1 = 1 " www.goodsgy.com

    大家看看,能有不进入的理由吗??给我一个不进入的理由,先! www.goodsgy.com

    以上USER PASS字段为字符型 如果是数字型也一样的道理!www.goodsgy.com

    解决方法: www.goodsgy.com

    一、函数替代法: www.goodsgy.com

    用REPLACE将用户端输入的内容中含有特殊字符进行替换,达到控制目的啊!sql="select * from 表 where user= "&replace(user," "," ")&" and pass= "&replace(pass," "," ")&" " www.goodsgy.com

    这种方法每次只能替换一个字符,其实危险的字符不只是" ",还有如">"、"<"、"&"、"%"等字符应该全控制起来。但用REPLACE函数好象不太胜任那怎么办呢?? www.goodsgy.com

    二、程序控制法 www.goodsgy.com

    用程序来对客户端输入的内容全部控制起来,这样能全面控制用户端输入的任何可能的危险字符或代码,我就的这个方法!

<%
    捕捉用户端提交的表单内容
    user=request.from("user")
    pass=request.from("pass")
    ...
    循环控制开始
    for i=1 to len(user)
    用MID函数读出变量user中i 位置的一个字符
    us=mid(user,i,1)
    将读出的字符进行比较
    if us=" " or us="%" or us="<" or us=">" or us="&" then
    如果含有以上字符将出错提示,不能含有以上特殊字符
    response.redirect "err2.htm"
    response.end
    end if
    next
    ...
    %> www.goodsgy.com

www.goodsgy.com

在百度中搜索:初学ASP编程易犯的一个错误要注意
在Google中搜索:初学ASP编程易犯的一个错误要注意
在Yahoo中搜索:初学ASP编程易犯的一个错误要注意

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]

 相关文章    最新文章
· [组图] PS初学者制作精美相框只需三步
· Photoshop基础:初学者学习经验谈
· CSS初学者应该保持的一种心态
· 初学:关于域名和空间的一些认识
· 给Vista初学者的建议 如何正确用Vista
· [组图] [原创]简单的立体字教程(初学者请..
· [组图] PS设计初学之立体感的产生
· [组图] Photoshop初学者几点小技巧总结
· HTML 初学者指南(一)
· HTML 初学者指南(二)
 
· 初学ASP编程易犯的一个错误要注意
· ASP实现SQL语句日期格式的加减运算
· ASP程序中输出Excel文件实例一则
· ASP实现IE地址栏参数的判断
· ASP技巧:判断远程图片是否存在
· ASP去掉字符串头尾连续回车和空格的Funct..
· 深入认识学习ASP应用Cookies的技巧
· ASP实现邮件发送普通附件和嵌入附件
· 在ASP.NET中把图片保存到SQL SERVER数据库..
· 巧用枚举CommandBehavior关闭SqlDataRead..

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:goodsgy(#)hotmail.com   (把(#)替换成@)
MSN:goodsgy(#)hotmail.com   (把(#)替换成@)