CodeIgniterでセキュリティ対策をする方法が頭の中でごちゃごちゃになっていたのでメモ。
確認環境
- CodeIgniter2.1.3英語版
1.databaseライブラリを読み込む
application/config/autoload.phpを開き、以下を追加します。
$autoload['libraries'] = array('database');
2.基本はActive Recordクラスを使う
Active Recordクラスを使用すればエスケープ処理を行ってくれますので、基本はActive Recordクラスようにします。(便利ですしね。)
Active Record クラス : CodeIgniter ユーザガイド 日本語版
3.自分でSQLを書いた場合
Active Recordクラスでは表現できないようなSQLを直書きで発行する場合は、該当値部分に$this->db->escape()を使います。
$this->db->escape()を間に挟むことでエスケープ処理を行ってくれます。
$query = $this->db->query("SELECT * FROM post WHERE id = {$this->db->escape($id)}");