解讀ASP程序執(zhí)行SQL語句時防止注入攻擊的問題(2)_ASP教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:揭秘asp常用函數(shù)庫大全’-----------------FLYSOBlogASP站點開發(fā)常用函數(shù)庫------------------ ’OpenDB(vdata_url)--------------------打開數(shù)據(jù)庫 ’getIp()-------------------------------得到真實IP ’getIPAdress(sip)------------------------查找ip對應的真實地址 ’IP2Num
解決的辦法:
在你使用參數(shù)前,對參數(shù)進行嚴格檢驗,尤其是用戶輸入的參數(shù)
不但要對其數(shù)據(jù)類型,長度進行檢查,還要對其內容進行檢查。
我們再看一段代碼。(用戶登陸)
username=request("user_name")
pwd=request("pwd")
username=replace(username,"’","’’")
pwd=replace(pwd,"’","’’")
sql="select uid,pwd from account where uid=’" & username & "’ and pwd=’" & pwd "’"
rs.open sql,conn,1,1
if not rs.eof then
response.write rs(0) & "歡迎您,您已登陸成功"
else
response.write "登陸失敗,錯誤的用戶名或密碼"
end if
............
以上程序的漏洞是顯而易見的
我們可以以 用戶名: admin 密碼: a’ or ’1’=’1
輕易以admin的賬號登陸系統(tǒng)
因為我們的sql 變?yōu)榱?
select uid,pwd from account where uid=’admin’ and pwd=’a’ or ’1’=’1’
顯然 uid=’admin’ and pwd=’a’ or ’1’=’1’是恒為成立的所以 rs.eof 為false
正確的寫法應為
sql="select uid,pwd from account where uid=’" & username & "’ and pwd=’" & pwd "’"
rs.open sql,conn,1,1
if rs(0)=username and rs(1)=pwd then
response.write rs(0) & "歡迎您,您已登陸成功"
else
response.write "登陸失敗,錯誤的用戶名或密碼"
end if
分享:詳解將ASP頁面改為偽靜態(tài)的簡單方法目前很多網(wǎng)站都采用生成靜態(tài)頁的方法,原因是這樣訪問速度會得到提高(服務器端CPU利用率很低),另外也容易被搜索引擎收錄,但是這帶來的一個問題就是需要足夠大的空間存放這些靜態(tài)頁面,如果你的空間不是很富裕,而又想有利于被搜索引擎收錄,其實可以采用偽
相關ASP教程:
- 相關鏈接:
- 教程說明:
ASP教程-解讀ASP程序執(zhí)行SQL語句時防止注入攻擊的問題(2)
。