PHP防SQL注入記錄

2021-08-02 03:36:36 字數 940 閱讀 5007

mysql注入歷來是php的乙個問題,目前主要有以下幾種方案:

(1)addslashes函式

(2)mysql_escape_string 和mysql_real_escape_string 函式(將被廢棄或已被廢棄)

(3)magic_quotes_gpc自動過濾輸入(由於效率問題,5.4以後已被強制關閉,無法開啟)

(4)使用pdo/mysql驅動查詢,消除注入

看了網上的幾篇博文,大致知道了注入的基本原理:

通過提交的資料,篡改sql語句,使得原來的mysql邏輯被篡改,繼而修改資料庫的資料或者獲取資料庫的資料;

一般有以下幾種注入攻擊:

1. 驗證注入:注入「and 1=1」;

2. 判斷字段數:

(1)嵌入order by 1,2,3.

...直到報錯就知道總共字段數

(2)union select ...聯合查詢,不斷改變字段數目,直到正常查詢時,就是欄位數了

3. 查詢庫名:在直到欄位數的前提下,通過union select來查詢資料庫名字資料

4. 查表名:前提是查出庫名,原理同查詢庫名

5. 查字段:前提是查出表名,原理同查詢庫名

6. 查資料:前提是查出欄位名,原理同查詢庫名

然後呢,防止注入的方法:

1. 對輸入字段進行過濾,如對敏感字元(如單引號,雙引號等)新增反斜槓

2. 使用引數化的過濾性語句(引數化配合mysql的預編譯還可以起到加速功能);

3. 避免使用解釋程式

4. 避免出現一些詳細的錯誤訊息

注意:

1. addslashes和mysql_escape_string對於gbk編碼有漏洞,在gbk下當遇到單引號時,只是將將0xbf27修改為0xbf5c27,還是沒將單引號轉義;

PHP防SQL注入

php防sql注入攻擊 收藏 沒有太多的過濾,主要是針對php和mysql的組合。一般性的防注入,只要使用php的 addslashes 函式就可以了。以下是一段copy來的 php post sql injection post get sql injection get function sql...

PHP防SQL注入

php防sql注入攻擊 收藏 沒有太多的過濾,主要是針對php和mysql的組合。一般性的防注入,只要使用php的 addslashes 函式就可以了。以下是一段copy來的 php post sql injection post get sql injection get function sql...

PHP防SQL注入的方法

php防sql注入的方法 sql注入攻擊是黑客攻擊 最常用的手段。如果你的站點沒有使用嚴格的使用者輸入檢驗,那麼常容易遭到sql注入攻擊。sql注入攻擊通常通過給站點資料庫提交不良的資料或查詢語句來實現,很可能使資料庫中的紀錄遭到暴露,更改或被刪除。下面來談談sql注入攻擊是如何實現的,又如何防範。...