1. 程式人生 > >SQL注入的測試方法

SQL注入的測試方法

簡介

Web應用程式的資料儲存與讀取通過資料庫完成,而這些讀寫的操作通過SQL語句實現。實際專案中可能因為開發人員的疏忽或經驗問題,未對使用者可輸入的引數進行嚴格地校驗,導致使用者可能惡意地將SQL命令帶入資料庫執行,實現注入的目的。

SQL注入的條件

  • 引數中含有SQL語句,並可以帶入資料庫正常執行
  • Web應用程式和資料庫的互動中,必須有引數加入請求傳遞至資料庫

SQL注入的方法

1. 搜尋型引數

判斷是否存在SQL注入漏洞,需滿足以下四步:

http://127.0.0.1/sql.php?Parameter=James    #正常查詢資料
http://127.0.0.1/sql
.php?Parameter=James' #頁面異常或查詢資料為空 http://127.0.0.1/sql.php?Parameter=James%'and'%'=' #正常查詢資料 http://127.0.0.1/sql.php?Parameter=James%'and'a%'='b #查詢資料為空或提示列表為空

2.數字型引數

判斷是否存在SQL注入漏洞,需滿足一下四步:

http://127.0.0.1/sql.php?Parameter=10001    #正常查詢資料
http://127.0.0.1/sql.php?Parameter=10001'   #頁面異常或查詢資料為空
http://127.0.0.1
/sql.php?Parameter=10001 and 1=1 #正常查詢資料 http://127.0.0.1/sql.php?Parameter=10001 and 1=2 #查詢資料為空或提示列表為空

3.字元型引數

判斷是否存在SQL注入漏洞,需滿足一下四步:

http://127.0.0.1/sql.php?Parameter=James    #正常查詢資料
http://127.0.0.1/sql.php?Parameter=James'   #頁面異常或查詢資料為空
http://127.0.0.1/sql.php?Parameter=James' and '1'='1    #正常查詢資料
http://127.0.0.1/sql.php?Parameter=James'
and '1'='2 #查詢資料為空或提示列表為空

後續

此外,一些注入的方法是通過Java+JDBC程式碼注入(Statement介面改為PreparedStatement介面預防)、MyBatis框架注入(Mapper XML檔案’$”拼接改為’#”拼接預防)等實現,因此對於一些對外的Web程式,SQL注入的檢查是必須的,否則通過SQL注入的漏洞,外部使用者可能獲取/修改資料或直接獲得管理員許可權,這對生產環境來說都是致命的。