国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
初學(xué)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>
     SUB.asp程序
     <%
     ‘‘接收表單中的數(shù)據(jù)
     user=request.from("UserID")
     ‘‘檢察表單提交的數(shù)據(jù)是否為空(表單頁面可能你用javascript OR VBSCRIPT控制了,但這里也不要忘記控制!
     if user="" then
     ‘‘轉(zhuǎn)到出錯提示頁面!
     response.redirect "err1.htm"
     ‘‘這一句可能沒用,但加上為好!
     response.end
     end if
     pass=request.from("Pass")
     if pass="" then
     response.redirect "err2.htm"
     response.end
     end if
     ‘‘聯(lián)接數(shù)據(jù)庫
     file=server.mappath("你的數(shù)據(jù)庫")
     set conn=server.createobject("adodb.connection")
     dr="driver={microsoft access driver (*.mdb)};dbq="&file
     conn.open dr
     set rs=server.createobject("adodb.recordset")
     ‘‘關(guān)鍵是這里的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
     %>
     大家感覺以上代碼應(yīng)該沒問題啊,但是這里有一個嚴重的安全隱患:

     我如果想登錄管理員的話可以在SUb.htm表單輸入框中輸入:

     第一個文本框中輸入:a‘‘ or ‘‘1‘‘=‘‘1 或 ‘‘ OR ‘‘‘‘=‘‘

     第二個文本框中輸入:a‘‘ or ‘‘1‘‘=‘‘1 或 ‘‘ OR ‘‘‘‘=‘‘

     提交,大家會看到...“嗚,聽我說完好不好,磚頭一會再丟過來..."

     "a " 和“1”為任意字符

     有人會問為什么你輸入這些字符會以管理員身份進入呢??

其實這些字符是對你程序中SQL語言的欺騙,而成功進入的。

     大家看:開始程序SQL中是對表進行查詢滿足user=‘‘"&user&"‘‘ and pass=‘‘"&pass&"‘‘"條件的記錄

     sql="select * from 表 where user=‘‘"&user&"‘‘ and pass=‘‘"&pass&"‘‘"

     我而輸入上面的代碼后就成了:

     sql="select * from 表 where user=‘‘a(chǎn)‘‘ or ‘‘1‘‘=‘‘1‘‘ and pass=‘‘a(chǎn)‘‘ or ‘‘1‘‘=‘‘1‘‘"

     大家看看,能有不進入的理由嗎??給我一個不進入的理由先!

     以上USER PASS字段為字符型 如果是數(shù)字型也一樣的道理!

     解決方法:

     一、函數(shù)替代法

     用REPLACE將用戶端輸入的內(nèi)容中含有特殊字符進行替換,達到控制目的?。。海?

     sql="select * from 表 where user=‘‘"&replace(user,"‘‘","‘‘‘‘")&"‘‘ and pass=‘‘"&replace(pass,"‘‘","‘‘‘‘")&"‘‘"

     這種方法每次只能替換一個字符,其實危險的字符不只是"‘‘",還有如">"、"<"、"&"、"%"等字符應(yīng)該全控制起來。但用REPLACE函數(shù)好象不太勝任那怎么辦呢??

     二、程序控制法

     用程序來對客戶端輸入的內(nèi)容全部控制起來,這樣能全面控制用戶端輸入的任何可能的危險字符或代碼,我就的這個方法?。海?

     舉例說明:

     <%
     ‘‘捕捉用戶端提交的表單內(nèi)容
     user=request.from("user")
     pass=request.from("pass")
     ...
     ‘‘循環(huán)控制開始
     for i=1 to len(user)
     ‘‘用MID函數(shù)讀出變量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
     ...
     %>

     通過以上學(xué)習(xí),大家一定會對ASP SQL有個深刻的了解。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
On Error Resume Next使用的了解.doc
ASP.NET自定義錯誤頁面 .
asp連接sqlserver數(shù)據(jù)庫實現(xiàn)代碼
ASP數(shù)據(jù)庫連接方式大全
SpringSide開發(fā)實戰(zhàn)(六):AJAX,在地獄中漫步
常用的ASP連接數(shù)據(jù)庫的函數(shù)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服