作者Pecker ()
看板Visual_Basic
標題Re: VB.NET
時間Wed Oct 27 19:43:40 2004
※ 引述《Pecker ()》之銘言:
: : OleDbCommand1.CommandText = "SELECT 帳號 FROM Form3 " & _
: : "WHERE 帳號 = '" & TextBox1.Text & "'" & _
: : " AND 密碼 = '" & TextBox2.Text & "'"
: 先不講你的錯誤
: 這樣寫是很危險的
: 會出現 SQL Injection 的問題
原作者私下發信問我什麼是SQL Injection
我想,我還是在這裡寫出來好了
以上面的程式碼來說
如果我在 TextBox1 當中輸入 ' or 'x' = 'x
而我在 TextBox2 當中, 也輸入 ' or 'x' = 'x
整行 SQL command 就會變成
Select 帳號 from form3 where 帳號 = '' or'x' = 'x' and 密碼
= '' or 'x' = 'x'
然後運算之後就會造成 Where 後面永遠是 True
所以 我就不需知道帳號密碼就可以輕鬆登入
更可怕的是當你下了 dr.read() <== 用 DataReader 的指令之後
所讀到的會是第一個使用者, 通常不都是 admin 嗎?
所以這個登入者可以輕鬆取得所有權限...
很可怕吧...
所以大家請小心
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.219.21.2