SQL 注入預防
SQL 注入是對資料庫查詢的攻擊。在 PHP 中,我們使用 mysql_real_escape_string()
函式來防止這種情況以及其他技術,但 CodeIgniter 提供內建函式和庫來防止這種情況。
我們可以通過以下三種方式阻止 CodeIgniter 中的 SQL 注入 -
- 轉義查詢
- 查詢招標
- 活動記錄類
轉義查詢
<?php
$username = $this->input->post('username');
$query = 'SELECT * FROM subscribers_tbl WHERE user_name = '.
$this->db->escape($email);
$this->db->query($query);
?>
$this->db->escape()
函式自動在資料周圍新增單引號並確定資料型別,以便它只能轉義字串資料。
查詢招標
<?php
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
?>
在上面的例子中,問號(?)將被 query()
函式的第二個引數中的陣列替換。以這種方式構建查詢的主要優點是值會自動轉義,從而產生安全查詢。CodeIgniter 引擎會自動為你完成,因此你無需記住它。
活動記錄類
<?php
$this->db->get_where('subscribers_tbl',array('status'=> active','email' => 'info@arjun.net.in'));
?>
使用活動記錄,每個資料庫介面卡生成查詢語法。它還允許更安全的查詢,因為值會自動轉義。