在CodeIgniter中: 有2個動作可以防止SQL注入。 對於那些在網絡編程方面有新意的人來說,Web編程中的另一種安全漏洞可能是致命的,因爲它可以暴露你的應用程序數據庫的內部,它是SQL注入。
再次感謝Codeigniter有能力處理它。但不幸的是,我合作的很多CI程序員(甚至是你)都已經(或可能)忘記了這兩個行爲,以防止SQL注入的任何情況。
棒與ActiveRecord的能力 的第一件事是用完整的查詢這樣做不是在處理查詢數據的任何情況:
$this->db->query("select * from users where user=$user and password=$password")
你不知道究竟裏面$用戶或$密碼變量當涉及到用戶誰會故意做錯的事情。即使是XSS sanitiser也不會處理在其中輸入引號,分號或短劃線字符組合的人。 因此,在這種情況下,您需要了解此Active Record事件,因爲它具有專用於防止SQL注入的輸入消除器功能。別擔心,它支持各種功能鏈接是這樣的:
$this->db->select('title')->from('mytable')->where('id', $id)->limit(10, 20);
$query = $this->db->get();
但要記住,如果你還是結合這樣的活動記錄功能的內部通常(部分)查詢功能將無法正常工作:
$query = $this->db->where("title LIKE '%$input%'");
其中實際上可以這樣改變。
$query = $this->db->like("title", $input);
重點是,使用CodeIgniter的活動記錄的可能性的每一點,不要亂它。
但如果是不行的,還存在另一種 如果你有一個很長的查詢,也懶得把它轉換爲活動記錄的風格,您可以使用此功能手動消毒你輸入:
$sanitised_title = $this->db->escape($title);
//像查詢
$sanitised_title = $this->db->escape_like_str($title);
內使用,你可以放心地串聯查詢裏面的消毒/逃脫輸入。
頁面roytuts.com/prevent-sql-injection-in-codeigniter/ – user3470953 2016-05-23 09:58:49
從安全助手中使用xss_clean方法也很好。 – 2016-12-08 13:24:06