欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
初學(xué)ASP編程易犯的致命問(wèn)題及解決辦法
舉例:

     表單提交頁(yè)面: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程序
     <%
     ‘‘接收表單中的數據
     user=request.from("UserID")
     ‘‘檢察表單提交的數據是否為空(表單頁(yè)面可能你用javascript OR VBSCRIPT控制了,但這里也不要忘記控制!
     if user="" then
     ‘‘轉到出錯提示頁(yè)面!
     response.redirect "err1.htm"
     ‘‘這一句可能沒(méi)用,但加上為好!
     response.end
     end if
     pass=request.from("Pass")
     if pass="" then
     response.redirect "err2.htm"
     response.end
     end if
     ‘‘聯(lián)接數據庫
     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")
     ‘‘關(guān)鍵是這里的SQL語(yǔ)言
     sql="select * from 表 where user=‘‘"&user&"‘‘ and pass=‘‘"&pass&"‘‘"
     rs.open sql
     if not rs.eof then
     ‘‘找到的話(huà)就進(jìn)入管理頁(yè)面
     reponse.redirect "login.asp"
     else
     ‘‘沒(méi)找到就進(jìn)入錯誤頁(yè)面
     response.write "err3.htm"
     end if
     %>
     大家感覺(jué)以上代碼應該沒(méi)問(wèn)題啊,但是這里有一個(gè)嚴重的安全隱患:

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

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

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

     提交,大家會(huì )看到...“嗚,聽(tīng)我說(shuō)完好不好,磚頭一會(huì )再丟過(guò)來(lái)..."

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

     有人會(huì )問(wèn)為什么你輸入這些字符會(huì )以管理員身份進(jìn)入呢??

其實(shí)這些字符是對你程序中SQL語(yǔ)言的欺騙,而成功進(jìn)入的。

     大家看:開(kāi)始程序SQL中是對表進(jìn)行查詢(xún)滿(mǎn)足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‘‘"

     大家看看,能有不進(jìn)入的理由嗎??給我一個(gè)不進(jìn)入的理由先!

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

     解決方法:

     一、函數替代法

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

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

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

     二、程序控制法

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

     舉例說(shuō)明:

     <%
     ‘‘捕捉用戶(hù)端提交的表單內容
     user=request.from("user")
     pass=request.from("pass")
     ...
     ‘‘循環(huán)控制開(kāi)始
     for i=1 to len(user)
     ‘‘用MID函數讀出變量user中i 位置的一個(gè)字符
     us=mid(user,i,1)
     ‘‘將讀出的字符進(jìn)行比較
     if us="‘‘" or us="%" or us="<" or us=">" or us="&" then
     ‘‘如果含有以上字符將出錯提示,不能含有以上特殊字符
     response.redirect "err2.htm"
     response.end
     end if
     next
     ...
     %>

     通過(guò)以上學(xué)習,大家一定會(huì )對ASP SQL有個(gè)深刻的了解。

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

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久