我做的學生資訊管理系統的介面
有兩個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 同一模組避免出現大...