Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter中的MySQL安全_Php_Mysql_Security_Codeigniter_Sql Injection - Fatal编程技术网

Php CodeIgniter中的MySQL安全

Php CodeIgniter中的MySQL安全,php,mysql,security,codeigniter,sql-injection,Php,Mysql,Security,Codeigniter,Sql Injection,我是CodeIgniter的新手,但对PHP并不陌生,我想知道我需要在CodeIgniter中做些什么才能确保所有查询的安全 通常,我只是对查询中使用的每个变量(标准PHP)使用mysql\u real\u escape\u string(),但我看了一个关于CodeIgniter的教程,作者没有对变量进行转义,只是做了如下标准插入: $this->db->query("SELECT * FROM Users WHERE Username = ?", array($username)

我是CodeIgniter的新手,但对PHP并不陌生,我想知道我需要在CodeIgniter中做些什么才能确保所有查询的安全

通常,我只是对查询中使用的每个变量(标准PHP)使用
mysql\u real\u escape\u string()
,但我看了一个关于CodeIgniter的教程,作者没有对变量进行转义,只是做了如下标准插入:

$this->db->query("SELECT * FROM Users WHERE Username = ?", array($username));
哪种方法是正确的?

您的示例是正确的

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

使用绑定的第二个好处是 自动转义,生成更安全的查询。你不必这么做 记住手动转义数据;这台发动机自动运转一周 你


请注意,此方法比使用mysql_real_escape_字符串安全得多,mysql_real_escape_字符串经常被错误地使用或在不安全的配置中使用,从而导致sql注入代码。除非绑定参数不可用,否则永远不要使用mysql\u real\u escape\u字符串。摆脱使用它(以及常规mysql库)的习惯,看看mysqli或pdo库中的参数绑定。