1. 程式人生 > >web安全之SQL註入

web安全之SQL註入

password 嚴格 add code 數據 檢查 star 代碼 輸入數據

一、如何理解SQL註入?
  1. SQL註入是一種將SQL代碼添加到輸入參數中
  2. 傳遞到SQL服務器解析並執行的一種×××手法

二、SQL註入是怎麽產生的?

  1. WEB開發人員無法保證所有的輸入都已經過濾
  2. ×××者利用發送給SQL服務器的輸入數據構造可執行的SQL代碼
  3. 數據庫未做相應的安全配置

三、如何尋找SQL輸入漏洞?

==借助邏輯推理==

1. 識別web應用中所有輸入點

  1. GET數據
  2. POST數據
  3. HTTP頭信息

2. 了解哪些類型的請求會觸發異常

3. 檢測服務器響應中的異常

四、如何進行SQL註入×××?

1. 數字註入

  1. 使用 or 讓 where語句永遠為真:數字註入 id=-1 or 1=1

SELECT * FROM table WHERE id = -1 OR 1=1

2. 字符串註入

使用#或者--空格

  1. mysql註釋方式 #註釋

SELECT * FROM table WHERE name=‘name‘#‘ AND password = ‘123456‘

  1. mysql註釋方式 --空格 註釋

SELECT * FROM table WHERE name=‘name‘-- ‘ AND password = ‘123465‘

五、如何預防SQL註入?

1 嚴格檢查輸入變量的類型和格式

  • 預先知道傳入的參數類型,根據參數類型判斷,可以防止某種類型的註入
  1. is_numeric(); 判斷字符串數字
  2. 使用正則表達式判斷字符串類型

2 過濾和轉義特殊字符

  1. 對特定字符進行轉義
使用php函數轉義特殊字符:
addslashes($name);
使用mysql函數轉義特殊字符:
mysqli_real_escape_string($db,$name);

3 利用MySQL的預編譯機制

web安全之SQL註入