php中防止SQL注入的最好方法是什麼

2022-07-21 05:50:04 字數 3677 閱讀 8113

1樓:

沒有最好的方法,只有根據專案作相應處理,比如,最常用的傳過來的數字型的值,做乙個是否數字的判斷

$cid = is_numeric($_get['cid'])?$_get['cid']:-1;

php中防止sql注入的最好方法是什麼?

php如何防止sql注入

2樓:小雞再次

額,這是我老師給的答案

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

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預處理

3樓:匿名使用者

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

提交的變數中所有的 ' (單引號), " (雙引號), \ (反斜線) 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 注入攻擊有哪些好方法

4樓:千鋒教育

使用pdo或者mysqli,有很多封裝好的方便的class。

例如使用php-pdo-mysql-class · github(這個class使用上比較類似python的mysqldb)的話,這樣就是安全的:

<?php

$db->query("select * from fruit where name in (?)",array($_get['pm1'],$_get['pm2']));

$db->query("select * from users where name=? and password=?",array($_get['name'],$_get['pw']));

?>

直接拼接字串則是危險的:

<?php

$db->query("select * from fruit where name in ('".$_get['pm1']."','".$_get['pm2']."')");

$db->query("select * from users where name='".$_get['name']."' and password='".

$_get['pw']."'");

?>

pdo引數繫結的原理是將命令與引數分兩次傳送到mysql,mysql就能識別引數與命令,從而避免sql注入(在引數上構造命令)。

mysql在新版本php中已經預廢棄,使用的話會丟擲錯誤,現在建議使用mysqli或者mysql_pdo。

php如何防止sql注入?

5樓:小雞再次

額,這是我老師給的答案

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

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預處理

6樓:銀馳陳慕

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

php中如何防止sql注入

php怎麼防止sql注入

7樓:匿名使用者

php一般是前段吧。防sql注入不如防http注入。。。。。

一般sql注意是拼sql的時候遇到字元中含有",--,*,{},等等特殊字元導致的。

如果你不是拼sql,而是用cyq.data之類的控制項來訪問資料則不會有這個問題。

如果自己拼sql,最簡單就是把上面所說的字元替換成全形符號。

8樓:匿名使用者

如果是字串型別:addslashes() 這個函式,轉義單雙引號;

如果接收的引數屬於整數型(id之類):intval() 直接取出數字,丟棄後邊的非數字字元;

或者使用pdo預處理語句,繫結引數的方式防止sql注入。

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

9樓:只是無良

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

如何在php中阻止sql注入?

10樓:武漢新華

從2方面加強防禦

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

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

排腎結石最好的方法?排腎結石最好的方法是什麼?

一般來說腎結石是我們臨床非常常見的疾病,特別是在南方地區,由於天氣氣候等原因導致腎結石的發病率往往要高於北方地區,而且在我們南方地區很多人可能都有過腎結石的病史。對於腎結石的 可能很多人也有不同的意見,一般來說排腎結石最好的方法要根據具體的病人,具體的方案來定,比如說腎結石比較小的時候多喝水,口服排...

最好的英語學習方法,最好的英語學習方法是什麼

英語學習主要講述學習英語的方法,注意事項等內容。學習英語貴在堅持,找到適合自己的方法,多運用多溫故。英語學習過程是一種觀察,模擬,認識,識記,思考,記憶等綜合的心理活動過程。建議從學單詞開始就聽寫背單詞,建立起人對英語單詞聲音形象的條件反射能力。英語學習技巧 學習英語貴在堅持,找到適合自己的方法,多...

失戀之後,調整心態的最好方法是什么

雖然說時間可以淡忘一切 如果你還愛他。怎麼都忘不了 如果你不愛他了。就會忘了 想辦法讓自己不再愛他 或者盡量不去接觸回憶2個人曾經的場景,不要做以前你們經常做的事情,經常的跟朋友一起去玩,一起瘋一起鬧,也可以出去旅遊一下或許會碰到你生命中的真愛哦,愛無處不在只要你不去懷念,分手就會是你乙個新的開始!...