1. 程式人生 > 資料庫 >深入瞭解SQL注入

深入瞭解SQL注入

1 .什麼是sql注入(Sql injection)?

Sql注入是一種將sql程式碼新增到輸入引數中,傳遞到Sql伺服器解析並執行的一種攻擊手法

2. 怎麼產生的?

Web開發人員無法保證所有的輸入都已經過濾

攻擊者利用傳送給Sql伺服器的輸入資料構造可執行的Sql程式碼

資料庫未做相應的安全配置

3.如何尋找sql漏洞?

識別web應用中所有輸入點

瞭解哪些型別的請求會觸發異常?(特殊字元”或')

檢測伺服器響應中的異常

4. 如何進行SQL注入攻擊?

數字注入:

Select * from tablename where id=1 or 1=1;

字串注入:

Mysql的註釋特性:

#與--號後面的被註釋掉,無論密碼輸入的是什麼,都能正確查詢。請點選此處輸入圖片描述

5. 如何預防sql注入?

嚴格檢查輸入格式:is_numeric(var),tp5的validate驗證,字串的注入採用正則看是否在[A-Za-z]之間

轉義:addslashes(str)、

mysqli_escape_string()函式進行轉義

6.MySQLi的預編譯機制

引數化繫結

引數化繫結,防止 SQL 注入的又一道屏障。php MySQLi 和 PDO 均提供這樣的功能。比如 MySQLi 可以這樣去查詢:

PDO 的更是方便,比如: