2016-01-09 66 views
0

我正在使用FluentPDO來處理我的數據庫查詢。 看着它的代碼,它似乎沒有使用任何形式的轉義。我明白PDO本身解決了很多安全問題,但它對它們不是免疫的。如何處理PHP中的FluentPDO的安全問題?

按我的理解,它不受SQL注入,只要我們使用準備好的語句的語法功能在它的主頁:

$query = $fpdo->from('article') 
     ->where('published_at > ?', $date) // HERE!! 
     ->orderBy('published_at DESC') 
     ->limit(5); 

如何逃脫的變量,以防止二階SQL注入?簡單地使用addslashes()就足夠了嗎?它會是多餘的嗎? 我應該如何處理這個庫的安全性?

謝謝!

+0

如果庫使用準備語句並綁定參數。這應該沒問題。 – frz3993

+0

不要區分數據來自哪裏;只是將它作爲參數傳遞,你很好。 – Gumbo

+0

抱歉@Gumbo,你能解釋一下嗎? – fgarci03

回答

0

關於消毒,read more

一些不錯的報價:

不要試圖防止SQL注入通過消毒輸入數據。

相反,不允許在創建SQL代碼時使用數據。使用準備好的語句(即使用模板查詢中的參數)使用綁定變量。這是保證防止SQL注入的唯一方法。

或(閱讀更多關於validating filters

PHP有新的好的filter_input功能現在,例如解放你從尋找「終極電子郵件正則表達式」現在有一個內置在FILTER_VALIDATE_EMAIL類型中

+0

請注意,驗證(如使用'FILTER_VALIDATE_EMAIL'指示的)不會進行正確的數據處理(例如,準備好的語句所使用的參數化)已過時。請參閱[是否FILTER_VALIDATE_EMAIL使字符串安全地插入數據庫?](http://stackoverflow.com/q/4154685/53114)和[是FILTER_VALIDATE_EMAIL足以停止shell注入?](http://stackoverflow.com/a/30816794/53114)。 – Gumbo