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個人曾經的場景,不要做以前你們經常做的事情,經常的跟朋友一起去玩,一起瘋一起鬧,也可以出去旅遊一下或許會碰到你生命中的真愛哦,愛無處不在只要你不去懷念,分手就會是你乙個新的開始!...