CodeIgniter中的MySQL安全性

max*_*ax_ 2 php mysql security sql-injection codeigniter

我是CodeIgniter的新手,但不是PHP新手,我想知道我需要在CodeIgniter中做些什么才能使我的所有查询都安全.

通常情况下,我只是用mysql_real_escape_string()在查询(标准PHP)中使用的每个变量,但我看了笨,这里笔者没有逃脱变量的教程,只是做了一个标准的插入类似如下:

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

哪种方式是正确的?

Tud*_*tin 5

您的示例执行参数绑定

正如您可以在上面链接的最后一段中看到的那样,绑定会自动转义传递给查询的值:

使用绑定的第二个好处是值会自动转义,从而产生更安全的查询.您不必记住手动转义数据; 引擎会自动为您完成.

  • 请注意,此方法比使用mysql_real_escape_string更加安全,mysql_real_escape_string通常使用不正确或在不安全的配置中使用,导致sql-injectable代码.除非绑定参数不可用,否则不应使用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 (2认同)