IT猫扑网:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|论坛转贴|软件发布

您当前所在位置: 首页网络编程Asp编程 → 初学ASP编程易犯的一个错误要注意

初学ASP编程易犯的一个错误要注意

时间:2015-06-28 00:00:00 来源:IT猫扑网 作者:网管联盟 我要评论(0)

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

    表单提交页面:sub.htm

   
    管理员登陆</title> <br />    <body> <br />    <form name="form1" method="post" action="sub.asp"> <br />    <p> 管理员: <br />    <input type="text" name="UserID" size="25" maxlength="20"><br />    密 码: <br />    <input type="text" name="Pass" size="12" maxlength="20"> <br />    <input type="submit" name="Submit" value="提交"> <br />    </p> <br />    </form> <br />    </body> <br />    </html> <br /> </p> <p>    SUB.asp程序 <br />    <% <br />    接收表单中的数据 <br />    user=request.from("UserID") <br />    检察表单提交的数据是否为空(表单页面可能你用<a href="https://www.itmop.com/key/java/" target="_blank">JAVA</a>SCRIPT OR <a href="https://www.itmop.com/key/vb/" target="_blank">VB</a>SCRIPT控制了,但这里也不要忘记控制! <br />    if user="" then <br />    转到出错提示页面! <br />    response.redirect "err1.htm" <br />    这一句可能没用,但加上为好! <br />    response.end <br />    end if <br />    pass=request.from("Pass") <br />    if pass="" then <br />    response.redirect "err2.htm" <br />    response.end <br />    end if <br />    联接<a href="https://www.itmop.com/key/shujuku/" target="_blank">数据库</a> <br />    file=server.mappath("你的数据库") <br />    set conn=server.createobject("adodb.connection") <br />    dr="driver={microsoft <a href="https://www.itmop.com/key/access/" target="_blank">access</a> driver (*.mdb)};dbq="&file <br />    conn.open dr <br />    set rs=server.createobject("adodb.recordset") <br />    关键是这里的SQL语言 <br />    sql="select * from 表 where user= "&user&" and pass= "&pass&" " <br />    rs.open sql <br />    if not rs.eof then <br />    找到的话就进入管理页面 <br />    reponse.redirect "login.asp" <br />    else <br />    没找到就进入错误页面 <br />    response.write "err3.htm" <br />    end if <br />    %> <br /> </p> <p>    大家感觉以上代码应该没问题啊,但是这里有一个严重的安全隐患:</p> <p>    我如果想登录管理员的话可以在SUb.htm表单输入框中输入: </p> <p>    第一个文本框中输入:a or 1 = 1 或 OR = </p> <p>    第二个文本框中输入:a or 1 = 1 或 OR = </p> <p>    提交,大家会看到..."呜,听我说完好不好,砖头一会再丢过来..." </p> <p>    "a " 和"1"为任意字符 </p> <p>    有人会问为什么你输入这些字符会以管理员身份进入呢?? </p> <p>    其实这些字符是对你程序中SQL语言的欺骗,而成功进入的 </p> <p>    大家看:开始程序SQL中是对表进行查询满足user= "&user&" and pass= "&pass&" "条件的记录 </p> <p>    sql="select * from 表 where user= "&user&" and pass= "&pass&" " </p> <p>    我而输入上面的代码后就成了: </p> <p>    sql="select * from 表 where user= a or 1 = 1 and pass= a or 1 = 1 " </p> <p>    大家看看,能有不进入的理由吗??给我一个不进入的理由,先! </p> <p>    以上USER PASS字段为字符型 如果是数字型也一样的道理!</p> <p>    解决方法: </p> <p>    一、函数替代法: </p> <p>    用REPLACE将用户端输入的内容中含有特殊字符进行替换,达到控制目的啊!sql="select * from 表 where user= "&replace(user," "," ")&" and pass= "&replace(pass," "," ")&" " </p> <p>    这种方法每次只能替换一个字符,其实危险的字符不只是" ",还有如">"、"<"、"&"、"%"等字符应该全控制起来。但用REPLACE函数好象不太胜任那怎么办呢?? </p> <p>    二、程序控制法 </p> <p>    用程序来对客户端输入的内容全部控制起来,这样能全面控制用户端输入的任何可能的危险字符或代码,我就的这个方法!<br /><% <br />    捕捉用户端提交的表单内容 <br />    user=request.from("user") <br />    pass=request.from("pass") <br />    ... <br />    循环控制开始 <br />    for i=1 to len(user) <br />    用MID函数读出变量user中i 位置的一个字符 <br />    us=mid(user,i,1) <br />    将读出的字符进行比较 <br />    if us=" " or us="%" or us="<" or us=">" or us="&" then <br />    如果含有以上字符将出错提示,不能含有以上特殊字符 <br />    response.redirect "err2.htm" <br />    response.end <br />    end if <br />    next <br />    ... <br />    %> </p> <p>关键词标签:错误,注意,一个,编程,</p> </dd> <div class="adw"> <script>//main("728*90");</script> </div> </dl> <p id="lread"> <b class="tit"> <em>相关阅读</em> </b> <span> <!--showCmsRes:id in({$mutualitycms})|DateAndTime desc|6|60| <i><a href="{url}" target="_blank">{title}</a></i> |{m}-{d}|0--> </span> </p> <dl id="commentBox"> <dt class="tit"><i>文章评论</i></dt> <dd id="comment"> <div id="comment-list"> <div id="hotCmt"> <!--hotshowLy--> </div> <dl> <!--showLy--> </dl> <p id="cmtNum-wrap"> <a href="https://www.itmop.com/comment_852_1.html">查看所有<span id="cmtNum">0</span>条评论>></a></p> </div> <div id="comment-form"> <form action="/ajax.asp" method="post" id="cmtForm"> <fieldset> <legend>发表评论</legend> <input name="SoftID" type="hidden" id="softID" value="852"/> <input name="CommentTpye" type="hidden" value="1"/> <input name="Action" type="hidden" value="2"/> <p id="userName-wrap"> <input name="UserName" type="text" id="userName" class="input-bg grey9" maxLength="10" value="网友"/></p> <p> <textarea name="content" id="cmtMsg" class="input-bor">我来说两句...</textarea> </p> <p> <button type="submit" class="btn-submit button btnOrg fr" id="subCmt">提交评论</button> </p> </fieldset> </form> </div> </dd><!-- #comment end --> <!--INCLUDE:/skin/pinglun_wz.html--> </dl> </dt> <dd id="cside"> <div class="adr"> <script>//main("250*250");</script> </div> <p id="rpj"> <b class="tit"><em>热门文章</em></b> <span> <a href="//www.itmop.com/article/1100.html"> <img width="150" height="100" src="" alt="ASP编程代码:隐藏图片的真实地址"/> <b>ASP编程代码:隐藏图片的真实地址</b> </a> <a href="//www.itmop.com/article/885.html"> <img width="150" height="100" src="" alt="ASP教程:0177:800401f3错误解决"/> <b>ASP教程:0177:800401f3错误解决</b> </a> <a href="//www.itmop.com/article/1019.html"> <img width="150" height="100" src="" alt="ASP代码中如何屏蔽ip地址 禁止某IP段访问网站"/> <b>ASP代码中如何屏蔽ip地址 禁止某IP段访问网站</b> </a> <a href="//www.itmop.com/article/8088.html"> <img width="150" height="100" src="" alt="错误80004005信息处理方法"/> <b>错误80004005信息处理方法</b> </a> <!--showCmsResImages:catalogid = {$catalogid}|DateAndTime desc|4|40|SmallImg|1| <a href="{url}"><img width="150" height="100" src="{img}" alt="{title}" /> <b>{title}</b> </a> |40--> </span> </p> <div id="wj"> <b class="tit"><em>相关下载</em></b> <ul> <!--showDownRes:id in({$mutualitydown}) and ResSize<>0|charindex(cast(id as varchar),'{$mutualitydown}')|6|42| <li> <a href="{softurl}" target="_blank" title="{softname}"> <img src="{smallimg}" alt="{softname}"><b>{softname}</b> </a> <p class="star{softrank}"></p> <p>时间:<em class="old">{date}</em></p> </li> |{m}-{d}|42--> </ul> </div> <p id="rwz"> <b class="tit"><em>人气排行</em></b> <span> <i><a href="//www.itmop.com/article/853.html" target="_blank">ASP下标越界的解决方法</a></i> <i><a href="//www.itmop.com/article/1019.html" target="_blank">ASP代码中如何屏蔽ip地址 禁止某IP段访问网站</a></i> <i><a href="//www.itmop.com/article/113.html" target="_blank">“文件共享锁定数溢出” 原因及解决方法</a></i> <i><a href="//www.itmop.com/article/736.html" target="_blank">无法写入数据库的解决方法</a></i> <i><a href="//www.itmop.com/article/885.html" target="_blank">ASP教程:0177:800401f3错误解决</a></i> <i><a href="//www.itmop.com/article/2206.html" target="_blank">ASP常用函数列表</a></i> <i><a href="//www.itmop.com/article/1226.html" target="_blank">如何用ASP来获取客户端真实IP的地址</a></i> <i><a href="//www.itmop.com/article/600.html" target="_blank">ASP用FSO生成HTML简单实例+详解[原创]</a></i> <!--showCmsRes:catalogid = {$catalogid}|Hits desc|8|60| <i><a href="{url}" target="_blank">{title}</a></i> |{m}-{d}|0--> </span> </p> </dd> </dl> <ul id="foot"> <li> <a href="https://www.itmop.com/about/" rel="nofollow">关于我们</a>| <a href="https://www.itmop.com/about/help.html" rel="nofollow">下载帮助</a>| <a href="https://www.itmop.com/about/downinfo.html" rel="nofollow">下载声明</a>| <a href="https://www.itmop.com/about/copyright.html" rel="nofollow">版权声明</a>| <a href="https://www.itmop.com/about/partner.html" rel="nofollow">合作伙伴</a>| <a href="https://www.itmop.com/about/ads.html" rel="nofollow">广告服务</a>| <a href="https://www.itmop.com/about/links.html" rel="nofollow">友情连接</a>| <a href="https://www.itmop.com/about/contact.html" rel="nofollow">联系我们</a>| <a href="https://www.itmop.com/catalog.html">网站地图</a> </li> <li>Copyright © 2007-2024 绿软下载站(www.itmop.com) All Rights Reserved. <a href="https://beian.miit.gov.cn" rel="nofollow noreferrer">蜀ICP备2024075814号-6</a> </li> </ul> <script type="text/javascript"> const _webInfo = {Username: "admin", Type: "1", DateTime: "2015-06-28 00:00:00 +0800 CST", Id: "852"}; </script> <script type="text/javascript" src="https://sc.itmop.com/v1/pc/statics/js/wz.js"></script> <script type="text/javascript"> const pageClass = 7; //读取文章人气 ViewCmsHits('hits', parseInt('852')); $("#comment-list > dl > dd > p a:last-child").addClass("glBtn"); BindDing("#comment-list > dl > dd > p", parseInt('852'), 1);//顶 </script> <script type="application/ld+json"> { "@context": "https://zhanzhang.baidu.com/contexts/cambrian.jsonld", "@id": "/article/852.html", "appid": "否", "title": "初学ASP编程易犯的一个错误要注意-IT猫扑网", "images": [ "" ], "description": "在ASP编程中,身份认证可以说是常要用到的。但怎么样才能做到认证的安全呢?&nbsp;&nbsp;&nbsp; 表单提交页面:sub.htm &lt;html&gt; &nbsp;&nbsp;&nbsp; &lt;head&gt; &nbsp;&nbsp;&nbsp; &lt;title&gt;管理员登陆</title&gt; &nbsp;&nbsp;&nbsp; &lt;body&gt; &", "pubDate": "2015-06-28 00:00:00 +0800 CST", "upDate": "2015-06-28 00:00:00 +0800 CST" } </script> </body> </html>