我想知道在Codeigniter中使用数据库库时是否有办法自动转义所有输入以防止注入。我知道我可以使用mysql_real_escape_string()来做到这一点,但我想知道它已经设置为自动执行此操作,如果没有,有没有包含这些的框架?从PHP框架的MySQL转义字符
谢谢!
我想知道在Codeigniter中使用数据库库时是否有办法自动转义所有输入以防止注入。我知道我可以使用mysql_real_escape_string()来做到这一点,但我想知道它已经设置为自动执行此操作,如果没有,有没有包含这些的框架?从PHP框架的MySQL转义字符
谢谢!
为了使用准备好的语句,你可以简单地使用CodeIgniter的查询绑定。
$query = 'SELECT id, name FROM user WHERE name = ?';
$bind = array('Jake');
$this->db->query($query, $bind);
右,漂亮实现任何类型的数据库抽象的muchallframeworks/ORM层会自动mysql_real_espace
查询。如果您不想使用整个框架,请考虑一个通用的ORM库,如Propel或Doctrine。或者,查看prepared statements。
感谢您的回复,我默认安装了CodeIgniter,并将其添加到数据库库中,并且可以将引号插入到文本输入中,然后发送到Update查询(使用数据库帮助程序),并导致语法错误。那么CodeIgniter有没有进一步的配置? – 2010-10-21 02:06:57
@Pete对不起,我不明白你在问什么。从你的问题中,我认为你已经熟悉CodeIgniter并且正在寻找像CI使用的ORM库,它*不需要任何手动转义...?就我个人而言,我没有CI的经验,所以我不能告诉你任何关于它的细节。 – deceze 2010-10-21 02:09:53
CakePHP通过自己的方法运行所有模型查询,如果使用模型方法,它会自动清理传递给查询的任何数据。即
$options['conditions'] = array('Product.status'=>$status);
$this->Product->find('first',$options);
使用预处理语句,所以你可以说再见,以mysql_real_escape_string()。 – Marwelln 2010-10-20 22:57:55
原谅我,通过准备语句你的意思是一个函数,清理所有的变量,然后把它们放入数据库? – 2010-10-20 23:06:35
不,他的意思是[准备好的陈述](http://www.php.net/manual/en/pdo.prepared-statements.php)。 – deceze 2010-10-20 23:08:07