2013-04-21 148 views
4

嗨我想知道如果使用Codeigniters活动记录类相当于使用预处理语句的安全问题?Codeigniter DB类与预处理语句

<?php 
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)"); 
$stmt->bindParam(':name', $name); 
$stmt->bindParam(':value', $value); 

// insert one row 
$name = 'one'; 
$value = 1; 
$stmt->execute(); 

?> 

$data = array(
    'title' => 'My title' , 
    'name' => 'My Name' , 
    'date' => 'My date' 
); 

$this->db->insert('mytable', $data); 

// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date') 

回答

5

CI不支持预处理语句,它支持查询绑定虽然。查询绑定和预准备语句都可以防止sql注入。但我更喜欢AR,因为易用性。它也使查询更具可读性。

您可以查看此link了解更多详情。

并检查CI查询从这个link

0

绑定直接回答这个问题。是。

这两个语句都会被转义,从注入攻击中提供安全性。 CodeIgniter数据库插入方法为您做了转义,而且php准备的语句包含本质上的转义。

看到这个link信息在php语句准备。

否则就速度而言,它们如何运行等等,这两种说法并不等同。

Hussain已经涵盖了其余部分。