柒本味:初学ASP编程易犯的致命问题及解决办法

来源:百度文库 编辑:偶看新闻 时间:2024/05/16 00:14:59
举例:

     表单提交页面: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"></font></code></p><p><font face="宋体">     密 码: </font><p><font face="宋体"><code>     <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>     SUB.asp程序<br>     <%<br>     ‘‘接收表单中的数据<br>     user=request.from("UserID")<br>     ‘‘检察表单提交的数据是否为空(表单页面可能你用javascript OR VBSCRIPT控制了,但这里也不要忘记控制!<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>     ‘‘联接数据库<br>     file=server.mappath("你的数据库")<br>     set conn=server.createobject("adodb.connection")<br>     dr="driver={microsoft access 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></code>     大家感觉以上代码应该没问题啊,但是这里有一个严重的安全隐患:</font></p><p><font face="宋体">     我如果想登录管理员的话可以在SUb.htm表单输入框中输入: </font><p><font face="宋体">     第一个文本框中输入:a‘‘ or ‘‘1‘‘=‘‘1 或 ‘‘ OR ‘‘‘‘=‘‘ </font><p><font face="宋体">     第二个文本框中输入:a‘‘ or ‘‘1‘‘=‘‘1 或 ‘‘ OR ‘‘‘‘=‘‘ </font><p><font face="宋体">     提交,大家会看到...“呜,听我说完好不好,砖头一会再丢过来..." </font><p><font face="宋体">     "a " 和“1”为任意字符 </font><p><font face="宋体">     有人会问为什么你输入这些字符会以管理员身份进入呢?? </font></p><p><font face="宋体">其实这些字符是对你程序中SQL语言的欺骗,而成功进入的。 </font></p><p><font face="宋体">     大家看:开始程序SQL中是对表进行查询满足user=‘‘"&user&"‘‘ and pass=‘‘"&pass&"‘‘"条件的记录 </font><p><font face="宋体">     sql="select * from 表 where user=‘‘"&user&"‘‘ and pass=‘‘"&pass&"‘‘" </font><p><font face="宋体">     我而输入上面的代码后就成了: </font><p><font face="宋体">     sql="select * from 表 where user=‘‘a‘‘ or ‘‘1‘‘=‘‘1‘‘ and pass=‘‘a‘‘ or ‘‘1‘‘=‘‘1‘‘" </font><p><font face="宋体">     大家看看,能有不进入的理由吗??给我一个不进入的理由先! </font><p><font face="宋体">     以上USER PASS字段为字符型 如果是数字型也一样的道理!</font></p><p><font face="宋体">     <strong><font color="#ff0000">解决方法:</font></strong> </font><p><font face="宋体">     <strong><font color="#cc0000">一、函数替代法</font></strong> : </font><p><font face="宋体">     用REPLACE将用户端输入的内容中含有特殊字符进行替换,达到控制目的啊!:) </font><p><font face="宋体">     sql="select * from 表 where user=‘‘"&replace(user,"‘‘","‘‘‘‘")&"‘‘ and pass=‘‘"&replace(pass,"‘‘","‘‘‘‘")&"‘‘" </font><p><font face="宋体">     这种方法每次只能替换一个字符,其实危险的字符不只是"‘‘",还有如">"、"<"、"&"、"%"等字符应该全控制起来。但用REPLACE函数好象不太胜任那怎么办呢?? </font><p><font face="宋体">     <font color="#cc0000"><strong>二、程序控制法</strong></font> </font><p><font face="宋体">     用程序来对客户端输入的内容全部控制起来,这样能全面控制用户端输入的任何可能的危险字符或代码,我就的这个方法!:) </font><p><font face="宋体">     举例说明: </font><p><code><font face="宋体">     <%<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>     %></font></code></p><p><font face="宋体">     通过以上学习,大家一定会对ASP SQL有个深刻的了解。</font></p></div> <div class="zuoye-list-a"> <a href="/article/bikeusz">!!初学ASP.NET编程的菜问题</a> <a href="/article/bikiyig">初学ASP.NET编程的菜问题</a> <a href="/article/bhxgjeu">初学ASP的简单问题</a> <a href="/article/bimaeej">asp编程的问题.</a> <a href="/article/bimjeyf">ASP编程的问题</a> <a href="/article/bilqfsu">WinAPI编程问题[初学]</a> <a href="/article/bilzmor">初学编程问题</a> <a href="/article/bimikin">编程初学问题</a> <a href="/article/bijfwou">初学ASP,有关连接数据库连接的问题:</a> <a href="/article/biablql">初学编程的困惑</a> <a href="/article/bhyxsto">关于ASP的编程问题</a> <a href="/article/bilkpun">一个ASP编程的问题</a> <a href="/article/bimahqp">asp编程的小问题.</a> <a href="/article/bhyocrw">雕刻机常见的问题及解决办法</a> <a href="/article/bicdjhs">中小企业网络营销出现的问题及解决办法</a> <a href="/article/bicgsxe">河南对外贸易存在的问题及解决办法</a> <a href="/article/bhxegkr">asp及access的问题</a> <a href="/article/bihdmtw">寻找ASP编程调用ACCESS的相关教程及文章</a> <a href="/article/bhvejrr">一个致命的问题?</a> <a href="/article/bilykrl">电脑的致命问题</a> <a href="/article/bhvpfiq">ASP.net的编程问题(求助)</a> <a href="/article/bhzunot">困绕很久的asp编程问题</a> <a href="/article/biagtow">关于电子邮件的问题(asp网页编程)</a> <a href="/article/bicodqt">?????关于asp的编程问题??? 谢谢!!大虾</a> </div> </div> </div> </div> </div> </div> </div> <div id="footer"> <div class="footerlinks"> <div class="panel panel-default"> <div class="panel-heading">相关问题</div> <div class="panel-body"> <a class="btn btn-default" href="/article/bhuxmff" title="红颜传奇---香雪疏影&人面桃花【古装美女】">红颜传奇---香雪疏影&人面桃花【古装美女】</a> <a class="btn btn-default" href="/article/bhuxmfg" title="钓鱼:鱼虾诱捕新招大全(101-153招)">钓鱼:鱼虾诱捕新招大全(101-153招)</a> <a class="btn btn-default" href="/article/bhuxmfh" title="《Photoshop色彩调整相关名词扫盲》摘自iAdo的文集">《Photoshop色彩调整相关名词扫盲》摘自iAdo的文集</a> <a class="btn btn-default" href="/article/bhuxmfi" title="浅析书法演进理路">浅析书法演进理路</a> <a class="btn btn-default" href="/article/bhuxmfj" title="养生堂:第一道防线(1)皮肤总论(视频)">养生堂:第一道防线(1)皮肤总论(视频)</a> <a class="btn btn-default" href="/article/bhuxmfk" title="12种鲫鱼汤的做法">12种鲫鱼汤的做法</a> <a class="btn btn-default" href="/article/bhuxmfl" title="马萧萧代表作《中国地名手记》修订版">马萧萧代表作《中国地名手记》修订版</a> <a class="btn btn-default" href="/article/bhuxmfm" title="实用类阅读文本通讲(给高三尖子生用)">实用类阅读文本通讲(给高三尖子生用)</a> <a class="btn btn-default" href="/article/bhuxmfn" title="企业如何申请自开建安发票? -- 会计问答网">企业如何申请自开建安发票? -- 会计问答网</a> <a class="btn btn-default" href="/article/bhuxmfo" title="连医生都拍案叫好的秘方、知道偏方70,从此不用去医院!">连医生都拍案叫好的秘方、知道偏方70,从此不用去医院!</a> <a class="btn btn-default" href="/article/bhuxmfp" title="A股市场会迎来一个新的牛市 一万点并非遥不可及">A股市场会迎来一个新的牛市 一万点并非遥不可及</a> <a class="btn btn-default" href="/article/bhuxmfq" title="红颜传奇---隔世缘【古装美女】">红颜传奇---隔世缘【古装美女】</a> <a class="btn btn-default" href="/article/bhuxmfr" title="一份缱绻,喜欢无言">一份缱绻,喜欢无言</a> <a class="btn btn-default" href="/article/bhuxmfs" title="文革时朱德被赶出中南海内幕">文革时朱德被赶出中南海内幕</a> <a class="btn btn-default" href="/article/bhuxmft" title="钓鱼:鱼虾诱捕新招大全(1-50招)">钓鱼:鱼虾诱捕新招大全(1-50招)</a> <a class="btn btn-default" href="/article/bhuxmfu" title="肾病3个穴位按摩疗法">肾病3个穴位按摩疗法</a> <a class="btn btn-default" href="/article/bhuxmfv" title="王羲之 平安帖">王羲之 平安帖</a> <a class="btn btn-default" href="/article/bhuxmfw" title="比利时女歌手--Dana Winner">比利时女歌手--Dana Winner</a> <a class="btn btn-default" href="/article/bhuxmfx" title="好酒品对才养生">好酒品对才养生</a> <a class="btn btn-default" href="/article/bhuxmfy" title="名人与高考——司马迁">名人与高考——司马迁</a> <a class="btn btn-default" href="/article/bhuxmfz" title="潮州卤水的做法详细图解">潮州卤水的做法详细图解</a> <a class="btn btn-default" href="/article/bhuxmga" title="糖尿病-----药茶01">糖尿病-----药茶01</a> <a class="btn btn-default" href="/article/bhuxmgb" title="【引用】引用 家庭书画装裱">【引用】引用 家庭书画装裱</a> <a class="btn btn-default" href="/article/bhuxmgc" title="领导最喜欢和不喜欢的10种人">领导最喜欢和不喜欢的10种人</a> <a class="btn btn-default" href="/article/bhuxmgd" title="中国摄影师诠释西洋美女 【10P】 [贴图]">中国摄影师诠释西洋美女 【10P】 [贴图]</a> <a class="btn btn-default" href="/article/bhuxmge" title="养生堂:灵丹妙药身上找(3)(视频)">养生堂:灵丹妙药身上找(3)(视频)</a> <a class="btn btn-default" href="/article/bhuxmgf" title="【引用】台湾军队直赴南海 北京火速支援">【引用】台湾军队直赴南海 北京火速支援</a> <a class="btn btn-default" href="/article/bhuxmgg" title="目标选择在人生中的作用">目标选择在人生中的作用</a> <a class="btn btn-default" href="/article/bhuxmgh" title="红颜传奇--桃花殇【古装美女】">红颜传奇--桃花殇【古装美女】</a> <a class="btn btn-default" href="/article/bhuxmgi" title="九选六考试应注意事项">九选六考试应注意事项</a> <a class="btn btn-default" href="/article/bhuxmgj" title="把这些故事看懂了,你做人就很成功了">把这些故事看懂了,你做人就很成功了</a> </div> </div> </div> <div class="copy-right"> <p>偶看新闻,客观、专业、权威的知识性互动百科全书。</p></div> </div> </div> <!--mip 运行环境--> <mip-stats-baidu> <script type="application/json"> { "token": "97cc1851a34f9e233119ff36ecf54098", "_setCustomVar": [1, "login", "1", 2], "_setAutoPageview": [true] } </script> </mip-stats-baidu> <script src="https://c.mipcdn.com/static/v1/mip.js"></script> <!--分享组件 代码--> <script src="https://c.mipcdn.com/static/v1/mip-share/mip-share.js"></script> <!--百度统计组件 代码--> <script src="https://c.mipcdn.com/static/v1/mip-stats-baidu/mip-stats-baidu.js"></script> </body> </html>