SQL injection

作為駭客攻擊最常見的手段,了解SQL injection阻止他人取得資料庫權限非常重要。
SQL injection主要是利用猜測,來在輸入欄位試著鍵入可作為程式碼一部分的字串。

strSQL = “SELECT * FROM member WHERE (userID =" + userID +") AND (password = “+ password +");"

這樣查詢SQL資料表關於帳號跟密碼的程式碼,
只要帳號跟密碼填入 “= 1 or 1 = 1″

strSQL = “SELECT * FROM member WHERE (userID =" +"1 or 1 = 1″ +") AND (password = “+ “1 or 1 = 1″ +");"

因為1 = 1 恆為True,又用了or,所以整個一定為True。
也可以在
MySQL 使用 /*
MsSQL 使用 —
把後面的其他查詢給註解化。

取得權限後的作為大致上就是,
猜測tableName->取得資料庫資料->讀取系統檔案內容

網路上也有包估對應ORACLE、SQL、MySQL、Access等資料庫一些暴力破解的工具,用來輔助猜測跟連續自動測試。

防範的方法:

1.排除可能出問題的字元,例如/ , " , ‘
2.md5 or double md5資料加密
3.砍掉預設根權限帳號
4.選擇不容易被猜到的命名方式
5.參數化查詢

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s