PHP開發中,POST方法接收的表單資料,需要經過哪些驗證來避免SQL注入?

時間 2021-05-07 21:24:29

1樓:黃良懿

注入主要有兩個方式,乙個是通過包括單引號和飯斜槓在內的字元變更原SQL語義,另外乙個則是在數值型別下不需要以上兩個特殊字元就可以通過or或and等行為改變SQL語義,甚至是通過逗號中斷原SQL並隨後附帶INSERT/UPDATE/DELETE等操作。後者又稱為盲注(Blind Injection)。

前者常見的解決方案是addslashes或mysql_escape_string,後者則需要對純數值型別進行intval等操作或有效性判斷等。

徹底一點的解決辦法是使用Prepared Stament,Mysqli和PDO均提供了這方面的支援,由於引數是由類負責格式化後傳入的,也就不再存在這些漏洞了。

原則上來說,不要信賴使用者提交的資料,包括$_GET、$_POST、$_COOKIE等。

2樓:王超

SQL注入跟輸入有關麼? 輸入做好輸入檢查即可. 跟資料庫打交道的話, mysql_escape_string()足矣.

3樓:

1,輸入字符集判斷如:UTF-8 preg_match('/^./us', $text) == 1

2,輸入型別長度判斷+型別轉換如:gettype,settype等3,輸入過濾, 如:preg_replace('/[^\x-\xa-zA-Z0-9u', '', (string) $s)

4,加雙引號,如:mysql_escape_string()

PHP 中的 GET 與 POST 有什麼區別?

modour 網路傳輸協議如http等是一種命令系統,命令系統一般格式是 op opdata http的get,post屬於命令,url,header,body等屬於資料。其區別 1 語義上的不同,即命令的目的是什麼 get 獲取資源 要求安全和冪等 post 修改資源 2 語法上的不同,即opda...

PHP開發組的成員有哪些?

馬秉堯 PHP開發組國內的成員列表 就是傳說中的鳥哥,yaf,yar,yac 等等擴充套件的作者,php7 的主要貢獻者。leveldb 擴充套件開發者,深入理解PHP核心 Thinking In PHP Internals 一書的發起人和主要作者。swoole 作者。yac 擴充套件的 windo...

HTTPS協議中POST的資料是被加密的嗎?

孫同學 網路協議都是分層的,一般上層協議是作為下層協議的 Body 部分,HTTPS 不是乙個單獨的協議,而是 HTTP over TLS,樸素的 HTTP 使用 TCP 作為傳輸層協議,所有的資料報都是明文,因而可以被輕易的截獲 監聽 篡改,HTTPS 在 HTTP 和 TCP 之間引入了 TLS...