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...