作者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