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

来源:百度文库 编辑:神马文学网 时间:2024/04/27 17:38:09
举例:
表单提交页面: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>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>大家感觉以上代码应该没问题啊,但是这里有一个严重的安全隐患:<br>我如果想登录管理员的话可以在SUb.htm表单输入框中输入:<br>第一个文本框中输入:a‘‘ or ‘‘1‘‘=‘‘1 或 ‘‘ OR ‘‘‘‘=‘‘<br>第二个文本框中输入:a‘‘ or ‘‘1‘‘=‘‘1 或 ‘‘ OR ‘‘‘‘=‘‘<br>提交,大家会看到...“呜,听我说完好不好,砖头一会再丢过来..."<br>"a " 和“1”为任意字符<br>有人会问为什么你输入这些字符会以管理员身份进入呢??<br>其实这些字符是对你程序中SQL语言的欺骗,而成功进入的。<br>大家看:开始程序SQL中是对表进行查询满足user=‘‘"&user&"‘‘ and pass=‘‘"&pass&"‘‘"条件的记录<br>sql="select * from 表 where user=‘‘"&user&"‘‘ and pass=‘‘"&pass&"‘‘"<br>我而输入上面的代码后就成了:<br>sql="select * from 表 where user=‘‘a‘‘ or ‘‘1‘‘=‘‘1‘‘ and pass=‘‘a‘‘ or ‘‘1‘‘=‘‘1‘‘"<br>大家看看,能有不进入的理由吗??给我一个不进入的理由先!<br>以上USER PASS字段为字符型 如果是数字型也一样的道理!<br>解决方法:<br>一、函数替代法 :<br>用REPLACE将用户端输入的内容中含有特殊字符进行替换,达到控制目的啊!:)<br>sql="select * from 表 where user=‘‘"&replace(user,"‘‘","‘‘‘‘")&"‘‘ and pass=‘‘"&replace(pass,"‘‘","‘‘‘‘")&"‘‘"<br>这种方法每次只能替换一个字符,其实危险的字符不只是"‘‘",还有如">"、"<"、"&"、"%"等字符应该全控制起来。但用REPLACE函数好象不太胜任那怎么办呢??<br>二、程序控制法<br>用程序来对客户端输入的内容全部控制起来,这样能全面控制用户端输入的任何可能的危险字符或代码,我就的这个方法!:)<br>举例说明:<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>%><br>通过以上学习,大家一定会对ASP SQL有个深刻的了解。</div> <div class="list-group"> <a href="/article/16431" class="list-group-item">初学ASP编程易犯的致命问题及解决办法</a> <a href="/article/174601" class="list-group-item">关于初学ASP.NET技术的学习顺序问题</a> <a href="/article/1837831" class="list-group-item">关于初学ASP.NET技术的学习顺序问题</a> <a href="/article/1013416" class="list-group-item">小企业易犯的九个致命错误</a> <a href="/article/2812591" class="list-group-item">初学主板维修应注意的问题及学习方法</a> <a href="/article/2422945" class="list-group-item">写给初学asp.net的新人们</a> <a href="/article/246842" class="list-group-item">废除户籍制度:问题及解决办法</a> <a href="/article/335551" class="list-group-item">废除户籍制度:问题及解决办法</a> <a href="/article/1440620" class="list-group-item">网页打开慢的原因及解决办法 - 软件问题 - 计算机网络</a> <a href="/article/1839544" class="list-group-item">网页打开慢的原因及解决办法 - 软件问题 - 计算机网络 -</a> <a href="/article/2269144" class="list-group-item">公文处理工作存在的主要问题及解决办法</a> <a href="/article/2441269" class="list-group-item">网页打开慢的原因及解决办法 - 软件问题 - 计算机网络</a> <a href="/article/8780" class="list-group-item">给初学编程者的忠告</a> <a href="/article/10575" class="list-group-item">给初学编程者的忠告</a> <a href="/article/79243" class="list-group-item">给初学编程者的忠告</a> <a href="/article/1235848" class="list-group-item">民营企业家易犯的十大致命错误</a> <a href="/article/2448345" class="list-group-item">WEB编程开发常用的代码-ASP教程,ASP应用</a> <a href="/article/2316409" class="list-group-item">asp编程的基本法则 [新手必看一]</a> <a href="/article/122917" class="list-group-item">爱普生C1100问题收集及解决办法</a> <a href="/article/1864428" class="list-group-item">十大打印机问题及解决办法</a> <a href="/article/2478455" class="list-group-item">C语言编程易犯毛病集合</a> <a href="/article/260746" class="list-group-item">ASP常见错误解决办法</a> <a href="/article/1502573" class="list-group-item">ASP常见错误解决办法</a> <a href="/article/433913" class="list-group-item">孙中山犯了一个致命的错误</a> </div> </div> </div> </div> </div> </div> <footer id="footer" class="footer hidden-print"> <div class="container"> <div class="panel panel-default"> <div class="panel-heading">相关问题</div> <div class="panel-body"> <a class="btn btn-default" href="/article/2461535" title="越吃越瘦 饮食秘诀让你疯狂变瘦">越吃越瘦 饮食秘诀让你疯狂变瘦</a> <a class="btn btn-default" href="/article/2461536" title="笑喷了!">笑喷了!</a> <a class="btn btn-default" href="/article/2461537" title="因为是女子,请记住亦舒的经典语录">因为是女子,请记住亦舒的经典语录</a> <a class="btn btn-default" href="/article/2461538" title="鄯善沙漠写照[">鄯善沙漠写照[</a> <a class="btn btn-default" href="/article/2461539" title="我的家园">我的家园</a> <a class="btn btn-default" href="/article/2461540" title="最全的厚黑学...教你怎样混社会1">最全的厚黑学...教你怎样混社会1</a> <a class="btn btn-default" href="/article/2461541" title="范曾_艺术中国">范曾_艺术中国</a> <a class="btn btn-default" href="/article/2461542" title="房屋拆迁正在演化为最深刻的社会矛盾">房屋拆迁正在演化为最深刻的社会矛盾</a> <a class="btn btn-default" href="/article/2461543" title="《成都市业主大会活动规则》指导细则">《成都市业主大会活动规则》指导细则</a> <a class="btn btn-default" href="/article/2461544" title="布教的精神">布教的精神</a> <a class="btn btn-default" href="/article/2461545" title="9种不良的饮食性格 毁掉身材">9种不良的饮食性格 毁掉身材</a> <a class="btn btn-default" href="/article/2461546" title="2002年韩日世界杯主题歌:Anthem-足球圣歌">2002年韩日世界杯主题歌:Anthem-足球圣歌</a> <a class="btn btn-default" href="/article/2461547" title="中年的你注意了吗">中年的你注意了吗</a> <a class="btn btn-default" href="/article/2461548" title="一个北京姑娘写的,真他妈经典!">一个北京姑娘写的,真他妈经典!</a> <a class="btn btn-default" href="/article/2461549" title="鸡汤的炖法和煲法">鸡汤的炖法和煲法</a> <a class="btn btn-default" href="/article/2461550" title="苏联外长葛罗米柯:调节中苏珍宝岛冲突的苏联人">苏联外长葛罗米柯:调节中苏珍宝岛冲突的苏联人</a> <a class="btn btn-default" href="/article/2461551" title="10绝招紧急收腹 秀出小肚腩">10绝招紧急收腹 秀出小肚腩</a> <a class="btn btn-default" href="/article/2461552" title="谈古论今话“拍卖”">谈古论今话“拍卖”</a> <a class="btn btn-default" href="/article/2461553" title="成熟男人与不成熟男人的N个标志!">成熟男人与不成熟男人的N个标志!</a> <a class="btn btn-default" href="/article/2461554" title="《江南之恋》">《江南之恋》</a> <a class="btn btn-default" href="/article/2461555" title="月亮之上——薪水版">月亮之上——薪水版</a> <a class="btn btn-default" href="/article/2461556" title="腾讯强迫用户二选一 市值1天缩百亿">腾讯强迫用户二选一 市值1天缩百亿</a> <a class="btn btn-default" href="/article/2461557" title="中国十大未收回的领土暗暗">中国十大未收回的领土暗暗</a> <a class="btn btn-default" href="/article/2461558" title="转贴:浮钓浮漂语言精解[广州钓鱼网 广东钓鱼网]">转贴:浮钓浮漂语言精解[广州钓鱼网 广东钓鱼网]</a> <a class="btn btn-default" href="/article/2461559" title=""三步找回被删并清空了回收站的文件"辟谣">"三步找回被删并清空了回收站的文件"辟谣</a> <a class="btn btn-default" href="/article/2461560" title="随意乐呵乐呵(41)">随意乐呵乐呵(41)</a> <a class="btn btn-default" href="/article/2461561" title="看世界巨富扎堆的法国小村美景(组图)_">看世界巨富扎堆的法国小村美景(组图)_</a> <a class="btn btn-default" href="/article/2461562" title="欧洲妓女眼中的中国男游客">欧洲妓女眼中的中国男游客</a> <a class="btn btn-default" href="/article/2461563" title="百度等宣布不兼容360 360称兼容QQ却遭腾讯否认">百度等宣布不兼容360 360称兼容QQ却遭腾讯否认</a> <a class="btn btn-default" href="/article/2461564" title="世界上最能搞怪的猫咪(组图)">世界上最能搞怪的猫咪(组图)</a> <a class="btn btn-default" href="/article/2461565" title="小小车船税为何引得民意跳脚">小小车船税为何引得民意跳脚</a> </div> </div></div> <div class="copy-right"> <p>神马文学网,客观、专业、权威的知识性互动百科全书。</p></div> </footer> </body> </html>