2011-11-20 68 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