如何在PHP中阻止SQL隱碼攻擊,怎麼樣在PHP中阻止SQL隱碼攻擊式攻擊

2022-02-20 07:26:35 字數 3785 閱讀 2707

1樓:武漢新華

從2方面加強防禦

1、從伺服器入手【需擁有伺服器操作許可權】 在配置檔案中 關掉各種含有風險的配置

2、修改程式   用的較多的是addslashes函式轉義下面把連結也分享 一起學習網頁連結

怎麼樣在php中阻止sql注入式攻擊

2樓:

php自帶一個功能可以對輸入的字串進行處理,可以在較底層對輸入進行安全上的初步處理,也即magic quotes。(php.ini

magic_quotes_gpc)。如果magic_quotes_gpc選項啟用,那麼輸入的字串中的單引號,雙引號和其它一些字元前將會被自動加

上反斜槓/。

但magic quotes並不是一個很通用的解決方案,沒能遮蔽所有有潛在危險的字元,並且在許多伺服器上magic quotes並沒有被啟用。所以,我們還需要使用其它多種方法來防止sql注入。

許多資料庫本身就提供這種輸入資料處理功能。例如php的mysql操作函式中有addslashes()、 mysql_real_escape_string()、mysql_escape_string()等函式,可將特殊字元和可能引起資料庫操作出錯的字

符轉義。那麼這三個功能函式之間有什麼卻別呢?下面我們就來詳細講述下。

雖然國內很多php程式設計師仍在依靠addslashes防止sql注入,還是建議大家加強中文防止sql注入的檢查。addslashes的問題在

於黑客可以用0xbf27來代替單引號,而addslashes只是將0xbf27修改為0xbf5c27,成為一個有效的多位元組字元,其中的0xbf5c仍會

被看作是單引號,所以addslashes無法成功攔截。

當然addslashes也不是毫無用處,它是用於單位元組字串的處理,多位元組字元還是用mysql_real_escape_string吧。

另外對於php手冊中get_magic_quotes_gpc的舉例:

if (!get_magic_quotes_gpc())  else

最好對magic_quotes_gpc已經開放的情況下,還是對$_post[』lastname』]進行檢查一下。

再說下mysql_real_escape_string和mysql_escape_string這2個函式的區別:

mysql_real_escape_string 必須在(php 4 >= 4.3.0, php 5)的情況下才能使用。否則只能用

mysql_escape_string ,兩者的區別是:mysql_real_escape_string

考慮到連線的當前字符集,而mysql_escape_string 不考慮。

總結一下:

* addslashes() 是強行加/;

* mysql_real_escape_string()   會判斷字符集,但是對php版本有要求;

* mysql_escape_string不考慮連線的當前字符集。

dz中的防止sql注入就是用addslashes這個函式,同時在dthmlspecialchars這個函式中有進行一些替換$string =

preg_replace('/&((#(/d|x[a-fa-f0-9]));)/',

'&//1',這個替換解決了注入的問題,同時也解決了中文亂碼的一些問題

3樓:匿名使用者

過濾不符合要求的字元。

php如何防止sql注入

4樓:小雞再次

額,這是我老師給的答案

答:過濾一些常見的資料庫操作關鍵字,

select ,insert,update,delete,and,*等或通過系統函式addslashes對內容進行過濾

php配置檔案中register_globals=off;設定為關閉狀態.(作用將註冊全域性變數關閉);如接收post表單的值使用$_post['user'],假設設定為on的話$user才接收值

sql語句書寫的時候儘量不要省略小引號(tab上面那個)和單引號

提高資料庫命名技巧,對於一些重要的欄位根據程式的特點命名,使之不易被猜中

對於常的方法加以封裝,避免直接暴漏sql語句

開啟php安全模式safe_mode=on

開啟magic_quotes_gpc來防止sql注入,預設為關閉,開啟後自動把使用者提交sql查詢語句進行轉換把"'"轉換成"\'"

控制錯誤資訊輸出,關閉錯誤資訊提示,將錯誤資訊寫到系統日誌

使用mysqli或pdo預處理

5樓:匿名使用者

這個方法比較多,這裡簡單舉個例子:

提交的變數中所有的 ' (單引號), " (雙引號), \ (反斜線) and 空字元會自動轉為含有反斜線的轉義字元,給sql注入帶來不少的麻煩。

請看清楚:「麻煩」而已~這並不意味著php防範sql注入,書中就講到了利用改變注入語句的編碼來繞過轉義的方法,比如將sql語句轉成ascii編碼(類似:char(100,58,92,108,111,99,97,108,104,111,115,116…)這樣的格式),或者轉成16進位制編碼,甚至還有其他形式的編碼,這樣以來,轉義過濾便被繞過去了

// 去除轉義字元

function stripslashes_array($array)

} else if (is_string($array))    return $array;

}@set_magic_quotes_runtime(0);   // 判斷 magic_quotes_gpc 狀態

if (@get_magic_quotes_gpc())

php防範sql注入的**

$keywords = addslashes($keywords); $keywords =

str_replace("_","\_",$keywords);//轉義掉」_」 $keywords =

str_replace("%","\%",$keywords);//轉義掉」%」

php中如何防止sql注入

php如何防止sql注入?

6樓:小雞再次

額,這是我老師給的答案

答:過濾一些常見的資料庫操作關鍵字,

select ,insert,update,delete,and,*等或通過系統函式addslashes對內容進行過濾

php配置檔案中register_globals=off;設定為關閉狀態.(作用將註冊全域性變數關閉);如接收post表單的值使用$_post['user'],假設設定為on的話$user才接收值

sql語句書寫的時候儘量不要省略小引號(tab上面那個)和單引號

提高資料庫命名技巧,對於一些重要的欄位根據程式的特點命名,使之不易被猜中

對於常的方法加以封裝,避免直接暴漏sql語句

開啟php安全模式safe_mode=on

開啟magic_quotes_gpc來防止sql注入,預設為關閉,開啟後自動把使用者提交sql查詢語句進行轉換把"'"轉換成"\'"

控制錯誤資訊輸出,關閉錯誤資訊提示,將錯誤資訊寫到系統日誌

使用mysqli或pdo預處理

7樓:銀馳陳慕

對於網頁來講,注入源頭還是在於使用者提交的資料問題,只要把這個資料控制好,注入是很難成功的。所以,對使用者提交上來的資料需要嚴格過慮及處理。

我怎樣才能防止在php的sql注入

8樓:只是無良

除非是很早之前的原生系統,現在的專案只要是使用了框架,都或多或少整合了基礎的sql防注入機制.

自己在家怎麼樣做酸奶,如何在家自己做酸奶

那先要買個酸奶機,有很多品牌的小家電都有酸奶機,都不貴,有了酸奶機還要買酸奶用的菌,和鮮牛奶,首先要把酸奶機裡的酸奶鍋用開水燙一下滅滅菌,然後到人鮮奶最多能做四袋奶,加入酸奶菌攪拌一下放入酸奶鍋十個小時左右就可以做好了,放在冷藏裡在吃口感更好,喜歡甜一點可以加入蜂蜜。需要有一個酸奶機,純牛奶和一小杯...

群碩軟體實力如何在裡面工作體驗怎麼樣

群碩不錯啊,個人覺得它以客戶為中心的模式是比較科學的。曾經跟他們合作過,他們對我們提出的要求能夠快速響應做出來,別的 商是做不到的,講真,實力是可以。所以在裡面工作學的的應該也是行業頂尖的技術吧。augmentum工作強度相當的大,一個星期50 60個小時 這個是我的weekly report中統計...

倫敦現在租房價格怎麼樣,如何在英國租房不被坑

看你租 了。郊區一點的一個月600磅,城區內的估計要800 1000 你知道在英國倫敦租房要花多少錢嗎 一般學生公寓的房型有3 bedroom,5 bedroom,studio等等幾個大類。除了個人的studio,基本上一個flat幾個房間的都是大家share廚房,bathroom也有可能是shar...