在ASP程式中執行SQL語句的安全性問題

來源:互聯網
上載者:User

在ASP程式中,如果我們的程式設計不當,就有可能面臨資料庫被別人控制的危險

以下是一個簡單的使用者更改密碼的代碼
---------------------
username=request("user_name")
pwd=request("pwd")
username=replace(username,"'","''")
pwd=replace(pwd,"'","''")
sql="update tbl_test set pwd='" & pwd & "' where uid='" & username & "'"
set rs=conn.execute (sql)

--------------
現在,假如我註冊一個使用者,使用者名稱為 aa'; exec sp_addlogin 'haha

當該使用者更改密碼時(假設改為pp),會出現什麼後果呢??

sql變為 update tbl_test set pwd='pp' where uid='aa' ; exec sp_addlogin 'haha'

結果是使用者密碼沒有被修改,因為沒有 aa這個使用者,
但在你的資料庫中建立了一個登陸,新登陸名為 haha

將使用者名稱稍加修改,實際上可以運行任何sql語句,任何sql系統過程
而這一切都在你不知情的情況下發生的,實際上,上面的只是一個

示範,稍微修改一下使用者名稱,我們可以做添加一個DBA帳號,刪除所

有紀錄,讀取使用者密碼等越權操作。

 

 解決的辦法:

在你使用參數前,對參數進行嚴格檢驗,尤其是使用者輸入的參數

不但要對其資料類型,長度進行檢查,還要對其內容進行檢查。

我們再看一段代碼。(使用者登陸)

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的帳號登陸系統
因為我們的sql 變為了
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

 

----全文完--------

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.