CodeIgniter ユーザガイド 日本語版 Version 1.6.1


入力クラス

入力クラスには2つの目的があります:

  1. グローバルな入力データをセキュリティのために前処理します。
  2. 入力データを取り出し、前処理するためのヘルパメソッドを提供します。

Note:このクラスは、システムで自動的に初期化されるので、手動で初期化する必要はありません。

セキュリティフィルタリング

セキュリティフィルタ機能は、新しいコントローラ が起動されると自動的に呼び出されます。フィルタ機能は、次のことを行います:

XSS フィルタリング

CodeIgniterには、クロスサイトスクリプティング攻撃防止フィルタが備わっています。XSSフィルタはPOSTおよびCOOKIEデータを扱うときに自動的に実行することも、項目ごとに実行することもできます。やや処理のオーバーヘッドがあるので、また、すべてのケースでは必要でないかもしれないので、初期状態では、グローバルには実行しません

XSSフィルタは、クッキーハイジャックなどの悪事を働くと思われるJavaScriptなどのコードを仕掛けるための一般的なテクニックを探し出します。もし許可されないものがあれば、データをHTMLエンティティの文字に変換して、安全にレンダリングします。

Note: このメソッドは、送信されたデータだけを扱うべきです。かなりの処理のオーバヘッドが必要になるので、実行時の一般的な処理に使用されるべきものではありません。

XSS フィルタにデータを通すには、次のメソッドを使います:

$this->input->xss_clean()

以下は使用例です:

$data = $this->input->xss_clean($data);

POST または COOKIE データを扱うときにはいつも自動的にフィルタを実行したい場合は、application/config/config.php ファイルを開いて次のように設定することで、有効にできます:

$config['global_xss_filtering'] = TRUE;

Note: フォームバリデーションクラスを使用している場合も、XSS フィルタリングのオプションを指定できます。

POST、COOKIE、あるいはSERVERデータの使用

CodeIgniterには、POST、COOKIEあるいはSERVERのデータを取得するための3つのヘルパメソッドが備わっています。直接項目を取得する(例:$_POST['something'] ) のでなく、このクラスが提供するメソッドを使う主な利点は、メソッドにより値がセットされているかチェックされ、セットされていない場合は、false (ブール値) を返すということです。このメソッドを利用すれば、項目が存在するかどうかをまずテストすることなく、便利にデータを使えます。つまり、通常は、次のようなコードになりますが:

if ( ! isset($_POST['something']))
{
    $something = FALSE;
}
else
{
    $something = $_POST['something'];
}

CodeIgniter の組み込みメソッドを使うと、単純に次のようになります:

$something = $this->input->post('something');

3つのメソッドは次の通りです:

$this->input->post()

第1引数は、コレクションの中から探し出すPOSTされた項目の名前になります:

$this->input->post('some_data');

このメソッドは、取り出そうとして見つからなかった場合、FALSE (ブール値) を返します。

第2引数は、オプションで、データをXSSフィルタに通すかどうかを指定します。XSSフィルタは、第2引数をブール値のTRUEに設定することで有効になります:

$this->input->post('some_data', TRUE);

$this->input->cookie()

このメソッドは、クッキーデータを取り出すということ以外は、post メソッドと同じです:

$this->input->cookie('some_data', TRUE);

$this->input->server()

このメソッドは、SERVERデータを取り出すということ以外は、上のメソッドと同じです:

$this->input->server('some_data');

$this->input->ip_address()

現在のユーザのIP アドレスを返します。IPアドレスが正しくない場合、このメソッドは、次のIPアドレスを返します: 0.0.0.0

echo $this->input->ip_address();

$this->input->valid_ip($ip)

IP アドレスを入力としてとり、IPアドレスとして妥当かどうかに応じて TRUE か FALSE (ブール値) を返します。Note: 上の$this->input->ip_address() メソッドは、IPの検証を自動的に行います。

if ( ! valid_ip($ip))
{
     echo 'Not Valid';
}
else
{
     echo 'Valid';
}

$this->input->user_agent()

現在のユーザが使用しているユーザエージェント(webブラウザ)を返します。利用できないときはFALSEを返します。

echo $this->input->user_agent();