PHP中的SQL注入和防禦

2021-08-19 17:21:18 字數 951 閱讀 5089

什麼是sql注入 ?

程式設計師在編寫**的時候,沒有對使用者輸入資料的合法性進行判斷,使應用程式存在安全隱患。

攻擊者可以提交一段精心構造的資料庫查詢**,根據返回的結果,獲得某些他想得知的資料,這就是所謂的sql injection,即sql注入。

受影響的系統:對輸入的引數不進行檢查和過濾的系統。

來看下我自己編寫的php乙個登入的介面 完全沒有過濾的

看這段**對使用者輸入的資料完全沒有過濾 就直接進入資料庫查詢了

這裡密碼是隨意輸入的 就直接繞過了限制

登入成功

這句**在資料庫裡面是這樣的

就直接查詢出來了所有的資料 因為or 1=1永遠是真,所以條件會成立。就會輸出所有的資料

防禦方法的話我是直接過濾的 不廢話看**!

用了這幾個函式來過濾,addslashes是過濾字串特殊符號知之前加了乙個反斜槓 

這樣的話 我剛才那樣構造payload不能成功了

mysql_real_escape_string是對字串中的'"\ \r \n 字元進行轉義

我也不知道這樣函式的用法對不對.請大家有啥意見多多指出.

小弟第一次寫文章,大佬們多多指教.

SQL注入 SQL注入具體防禦方案

通常在開啟這兩個選項之後能防住部分sql注入漏洞被利用,因為我們之前也介紹了,在某些環境下存在繞過,在int型注入上是沒有多大作用的。通常資料汙染有兩種方式。在php5.4之前,可以利用魔術引號來解決部分sql注入的問題。而gpc在面對int型注入時,也無法進行很好的防禦。所以在通常的工作場景中,用...

sql注入繞過防禦

無waf方式已經在漏洞重溫sql注入中有描述,這裡就不多做贅述,有興趣的朋友可以去看看。內聯注釋 簡單理解 在進行演示之前,首先了解一下內聯注釋。內聯注釋通常用於繞過 安全狗,也就是俗稱的過狗。簡單來說,如果waf攔截的特徵是兩個關鍵字連線在一起,例如我們在判斷顯示位置時使用的order by,在聯...

防禦SQL注入的方法總結

這篇文章主要講解了防禦sql注入的方法,介紹了什麼是注入,注入的原因是什麼,以及如何防禦,需要的朋友可以參考下 sql 注入是一類危害極大的攻擊形式。雖然危害很大,但是防禦卻遠遠沒有xss那麼困難。sql 注入可以參見 sql 注入漏洞存在的原因,就是拼接 sql 引數。也就是將用於輸入的查詢引數,...