Sql語句密碼驗證的安全漏洞

2021-04-01 07:19:49 字數 897 閱讀 8678

今天在網上看到乙個文件現在摘了下來。

「 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,這意味著無論在密碼中輸入什麼值,均能通過上述的密碼驗證!這個問題的解決很簡單,方法也很多,最常用的是在執行驗證之前,對使用者輸入的使用者和密碼進行合法性判斷,不允許輸入單引號、等號等特殊字元。

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

___________摘自http://.knowsky.***/4212.html

Web 安全漏洞之 SQL 注入

有人的地方就有江湖,有資料庫存在的地方就可能存在 sql 注入漏洞。在所有漏洞型別中,sql 注入可是說是危害最大最受大家關注的漏洞。簡單說來,sql 注入是通過在使用者可控引數中注入sql語法,破壞原有sql結構,達到編寫程式時意料之外結果的攻擊行為。還是以 thinkjs 為例,假設我們寫了如下...

WEB服務的安全漏洞

隨著網路的飛速發展,如今很多系統都是基於 b s的模式提供 web服務,web系統很方便但也很危險,傳輸的資料很容易被截獲,從而給使用者造成損失,如果部署了 ssl數字證書的話,在很大程度上能保證資料的安全,尤其是在傳輸過程中。ssl secure sockets layer 安全套接層 其繼任者傳...

ASP常見的安全漏洞

asp的漏洞已經算很少的了,想要找到資料庫的實際位置也不簡單,但這不表明黑客無孔可入,也正是這個觀點,一般的程式設計員常常忘記仔細的檢查是否有漏洞,所以才有可能導致 資料被竊取的事件發生。今天我在這裡和大家談談asp常見的安全漏洞,以引起大家的重視及採取有效的防範措施。注意,在本文中所介紹的方法請大...