關於sql 注入 一點拙解

2021-04-24 06:46:59 字數 1443 閱讀 1794

我做的學生資訊管理系統的介面

有兩個textbox 兩個button

兩個文字框的名字分別是

:username,userpassword,

在資料庫中分別對應兩列:

loginusername,loginuserpassword

在登入驗證時,我們一般的驗證語句是:

select

*from

logininfo

where

loginusername

='user001'

andloginuserpassword

='1234'

在**中的表現語句為:

「select

* from

logininfo

where

loginusername=』」+

username.text+」』

and loginuserpassword=』」+

userpassword.text+」』

」 在驗證時,文字框中的內容是作為驗證串的一部分的,所以驗證串我們是可以自己改變的!

那麼我們就可以在第乙個文字框中這樣輸入:a』

or loginusername <> 『a

(此處紅色「』

」與上面的

username.text

對應起來看)

同樣第二個文字框中的內容我們也可以這樣輸入:b』

or loginuserpassword <> 『b

(此處紅色「』

」與上面的

userpassword.tex

t對應起來看)

通過上面的驗證就可以保證輸入的驗證字串是正確的,並可以保證返回的是

true

這樣再點登入按鈕時

,即使不知使用者名稱和密碼也可以登入了

―――――――――――――――――――――――――――――――――――――――

如果是使用者名稱和密碼分開驗證那麼它的驗證串一般這樣寫:

select * from logininfo where loginusername=』」+username.text+」』」

這樣我們就不知道密碼了,但我們可以通過這樣的方式來在資料庫中增加一條記錄:

在username

這個文字框中這樣輸:

a'; insert into info.logininfo values('

uservvv

','1234

');

這樣構成的整體語句為:

select * from info.logininfo where loginusername='

a'; insert into info.logininfo values('

uservvv

','1234

');就可以在資料庫中插入一條使用者記錄,以後就可以用這個使用者和密碼登入了!

sql注入的一點學習(待更新)

什麼是sql注入?通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。假如資料庫中有一張商品表goods,存放多條商品資訊 當執行sql語句 select from goods where id 1 查詢結果當然為一條資料 當執行sql語句...

sql注入之布林注入 實驗吧 認真一點啊!

原文 先簡單地試試,發現輸入1會回顯you are in,輸入其他會回顯you are not in,而輸入1 也會回顯you are not in,這說明單引號沒有被吃掉,還可以使用。繼續測試發現過濾了and 空格和 or沒有被過濾。構造id 1 or 0a 1或者id 1 or 1,看到的回顯卻...

關於SQL優化的一點建議

前段時間一直在做關於效能優化相關的工作,結合自己的實際工作經驗,只針對sql層面提一些優化的規範和建議。1 單條sql長度不宜超過100行 2 sql子查詢不宜巢狀3層 子查詢巢狀過多,又可能會導致解析過於複雜,產生錯誤的執行計畫 3 sql表關聯需要考慮連線和限制條件的索引 4 同一模組避免出現大...