主要是沒有對登入密碼的字串進行引數化和過濾,所以導致網站可以直接用「萬能密碼」進行突破登入
僅供學習交流
看到這個後臺,感覺做的還是不錯的,首先SQL隱碼攻擊一般這種「萬能密碼」在99%的網站都是沒有用的了,因為幾乎所有釋出到網路上的網站都是有進行安全考慮的,像這種學生的學術作品的話,一般不會考慮那麼多,所以直接使用萬能密碼進行登入後臺
萬能密碼:'or 1=1--
使用者名稱隨便輸入,密碼填寫這個,輸入驗證碼,ok,大功告成
直接就登入成功了,不論他設定的是什麼密碼,都可以直接登入進去
一般沒有進行SQL語句引數化的登入語句是這樣的
Select * From 使用者表 Where UserName=xxx and Password=xxx
然後判斷返回的行數,如果有返回行,證明賬號和密碼是正確的,即登入成功,而這樣的語句的話,就很容易被注入程式碼,也就是在登陸的SQL語句中新增一段程式碼,例如直接在密碼框輸入【’or 1=1–】,那麼它的登入語句就會變成
Select * From 使用者表 Where UserName=xxx and Password=xxx or 1=1--
or是或者的意思,也就是Password=xxx的時候可以登入,也可以是1=1的時候可以登入,要知道,1永遠等於1,所以登入條件永遠成立,所以永遠可以登入。
而將SQL語句進行分解引數化,就可以很好的解決這個問題,用到SQL的地方,儘量都將SQL進行引數化和符號過濾。
原文自:熊沐風同學