資料隱碼(SQL Injection),這早該絕跡的古董級 bug ,到現在我還是很容易在一些網頁程式上看到(默~

或許那位 Programer 覺得人性本善,所以不會有人去找這種小漏洞

但事實是,現在還是有人看到網頁會不自禁的用個 ' 去測試一下那個的程式有沒有這古董級的 Bug 存在

都已經到了 .Net 設計時代了,遇到資料庫有關的就乖乖用 OleDbParameter 或 SqlParameter 不是很好

為了省這幾個字,然後用字串串接的方式,開發效率沒快到哪去,但 bug 卻大把大把的留下...

就算真的愛用字串串接,想把一切掌握在手裡,那也把危險字元取代掉吧(沒錯,就像 php 使用的 addslashes 函數一樣)


以下舉些 SQL Injection 的例子

ASP.Net 的驗證程式

這時如果使用者在 Account 輸入
' or 1=1 --
組出來的 SQL 式可能就變
Select * From Users Where Account='' or 1=1 -- and Password=''
因為 -- 是 SQL Server 的註解符號,所以會跳過後面 Password 的驗證
但實際測試則是 -- 在 Access 資料庫並不適用,所以我改利用
Account 輸入隨便
Password 輸入 ' or ''='
SQL 式組出來如下
Select * From Users Where Account='' and Password='' or ''

類似這樣能取出一些資料,當然,組合方式很多,但簡單來說就是一種 SQL 的填空遊戲

arrow
arrow
    全站熱搜

    MyWCT 發表在 痞客邦 留言(0) 人氣()