2013-04-21 70 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已經涵蓋了其餘部分。