2011-11-20 54 views
2

我是CodeIgniter的新手,但並不是PHP的新手,我想知道在CodeIgniter中需要做什麼才能使我的所有查詢都安全。CodeIgniter中的MySQL安全性

通常情況下,我只是用mysql_real_escape_string()在查詢(標準PHP)中使用的每個變量,但我看了笨,這裏筆者沒有逃脫變量的教程,只是做了一個標準的插入類似如下:

$this->db->query("SELECT * FROM Users WHERE Username = ?", array($username)); 

哪種方法是正確的?

回答

5

你的例子確實parameter binding

正如你可以在上面的鏈接的最後一個段落的內容,自動綁定逃脫通過查詢值:

使用結合的第二個好處是,值 自動轉義,產生更安全的查詢。你不必 記得手動轉義數據;發動機自動爲你做 。

+2

請注意,此方法比使用mysql_real_escape_string更安全,通常使用不正確或不安全的配置,導致sql注入代碼。除非綁定參數不可用,否則不應該使用mysql_real_escape_string。擺脫使用它的習慣(以及普通的mysql庫)並查看mysqli或pdo庫中的參數綁定。 http://stackoverflow.com/questions/110575/do-htmlspecialchars-and-mysql-real-escape-string-keep-my-php-code-safe-from-inje – Cheekysoft