PHP漏洞防範 (二) - magic_quotes_gpc=Off的安全性問題  

若是從 PHP 4.0 或甚至更早的版本開始寫程式,一定對magic_quotes_gpc這個設定不會陌生。早期的 PHP 為了防止 user 端送到 server 端的資料,會被惡意內容攻擊,有 SQL injection的疑慮,因此很體貼地設計一個這樣的開關。當magic_quotes_gpc=on時,$_GET、$_POST、$_COOKIE 等等從 user 端來的資料,如果含有單引號、雙引號、反斜線等內容,會自動被加一條反斜線在前面,把該字元跳脫掉,也就是做 addslashes() 的處理,以免開發者不做檢查就直接把資料串在 SQL 指令上,導致系統沒兩天就被駭客爆台。於是,PHP版本持續演進從預設 magic_quotes_gpc = on,變成預設 magic_quotes_gpc = off,再到 PHP 5.3 版之後跟register_globals一樣,宣告棄用,拿掉了這個功能。

這部分因為最新的版本都沒有magic_quotes_gpc這個設定,所以不能設定為On,全部要由開發者來自行處理資料過濾,建議所有資料庫都使用PDO去連接,而參數當然是用PDO::prepare()含式,去慢慢組合,就可以避免惡意字串的注入,從而避免掉SQL injection攻擊。

 

  1. PHP漏洞防範 (一) - register_globals=On的安全性問題 
創作者介紹

宇若彎彎

周宇若 發表在 痞客邦 PIXNET 留言(0) 人氣()