SQL注入攻擊

什麼是SQL注入攻擊?

所謂SQL注入,就是經過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。php


  1. SQL注入原理:mysql

web架構一般爲三層:
web

表示層、邏輯層、存儲層sql


SQL注入過程:數據庫

  1. 轉義字符處理不當服務器

   // 構造動態SQL語句cookie

  $sql = "select * from tbl where field = '$_GET['input']'";架構

  // 執行SQL語句post

  $res = mysql_query($sql);測試

測試:

在下邊的網址後邊加一個單引號,就會報數據庫錯誤

http://testphp.vulnweb.com/artists.php?artist=1

2.類型處理不當

   // 構造動態SQL語句

  $sql = "select * from tbl where field = $_GET['user_id']";

  // 執行SQL語句

  $res = mysql_query($sql);

Mysql內置了一個命令,能夠讀取文件

* Union all select load_file('/etc/passwd')--


select * from tbl where userid = 1 union all select load_file('etc/passwd')--

該命令會獲取數據庫管理員的密碼


3.查詢語句組織不當

user.php?table=user&


4.錯誤處理不當

即將站點的錯誤信息暴漏給用戶,這樣很是危險。


// 構造動態查詢語句

$getid = "select * from tbl where userid > 1";

// 執行SQL語句

$res = mysql_query($getid) or die('<pre>'.mysql_error().'</pre>');

5.多個提交處理不當

// 參數是不是一個字符串

if(is_string($_GET["param"])){}


問題:

1.若是web站點禁止輸入單引號字符,是否能夠避免SQL注入?

尋找SQL注入的方法:

  1. 經過get請求

  2. 經過post請求

  3. 其餘http請求,如cookie

相關文章
相關標籤/搜索