CodeIgniterでSQLインジェクション対策をする

CodeIgniter
スポンサーリンク

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)}");