Sql語句注入漏洞

2021-06-23 07:13:15 字數 825 閱讀 8124

sql語句作為國際標準的資料庫查詢語句,在各種程式設計環境中得到了廣泛的應用。作為乙個成熟、穩定的系統,使用者登陸和密碼驗證是必不可少的。筆者在平時的程式設計工作中發現,許多程式設計師在用sql語句進行使用者

密碼驗證時是通過乙個類似這樣的語句來實現的: 

sql="select * from 使用者表 where 姓名='"+name+"' and 密碼='"+password+"'" 

其中name和password是存放使用者輸入的使用者名稱和口令,通過執行上述語句來驗證使用者和密碼是否合法有效。但是通過分析可以發現,上述語句卻存在著致命的漏洞。當我們在使用者名稱中輸入下面的字串時:111'or'1=1,然後口令隨便輸入,我們設為aaaa。變數代換後,sql語句就變成了下面的字串: 

sql="select * from 使用者表 where 姓名='111'or'1=1' and 密碼='aaaa' 

我們都知道select語句在判斷查詢條件時,遇到或(or)操作就會忽略下面的與(and)操作,而在上面的語句中1=1的值永遠為true,這意味著無論在密碼中輸入什麼值,均能通過上述的密碼驗證!這個問題的解決很簡單,方法也很多,最常用的是在執行驗證之前,對使用者輸入的使用者和密碼進行合法性判斷,不允許輸入單引號、等號等特殊字元。 

上述問題雖然看起來簡單,但確實是存在的。例如在網際網路上很有名氣的網路遊戲"笑傲江湖"的早期版本就存在著這樣的問題,筆者也是在看了有關此遊戲的漏洞報告後才仔細分析了自己以前編寫的一些程式,竟然有不少也存在著這樣的漏洞。這確實應該引起我們的注意。這也暴露出包括筆者在內的年輕程式設計師在程式設計經驗和安全意識上的不足。同時也提醒我們程式設計工作者在程式設計時應當充分考慮程式的安全性,不可有半點馬虎,乙個看似很小的疏漏可能就會造成很嚴重的後果。

SQL注入漏洞

sql注入漏洞曾經是web應用程式的噩夢,cms bbs blog無一不曾受其害。sql注入的原理 以往在web應用程式訪問資料庫時一般是採取拼接字串的形式,比如登入的時候就是根據使用者名稱和密碼去查詢 string sql select top 1 from user where username...

SQL注入漏洞

sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令,比如先前的很多影視 洩露vip會員密碼大多就是通過web表單遞交查詢字元暴出的,這類表單特別容易受到sql注入式攻擊 sql注入的發生 當應用程式使用輸入內容來構造動態sq...

sql注入漏洞

什麼是sql注入 通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。通俗地講,它是利用現有應用程式,將 惡意 的sql命令注入到後台資料庫引擎執行的能力,它可以通過在web表單中輸入 惡意 sql語句得到乙個存在安全漏洞的 上的資料庫,而...