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

ユーザガイドを検索

# セキュリティ

このページでは Web セキュリティに関する "ベストプラクティス" と、 CodeIgniter の内部のセキュリティ機能の詳細について説明します。

## URI セキュリティ

CodeIgniter では、悪意のあるデータがアプリケーションに渡される可能性を最小限にするため、 URI 文字列で使用できる文字列を厳しく制限しています。URI には次の文字だけを使用できます:

- 英数字
- チルダ: ~
- ピリオド: .
- コロン: :
- アンダースコア: _
- ダッシュ(ハイフン): -

## Register_globals

$_GET、$_POST および $_COOKIE 配列以外の全グローバル変数は、システムが初期化されるときにクリアされます。 このクリア処理は register_globals = off と同等の効果を発揮します。

## エラー報告

本番環境では、内部のエラー報告フラグの値を 0 に設定し PHP のエラー報告を無効にすることが通常は望ましいです。 これは、慎重に扱うべき情報が含まれる可能性のある PHP によるエラーが 出力としてレンダリングされないようにします。

index.php に含まれる CodeIgniter の定数 `ENVIRONMENT` の値を '`production`' に設定するとこれらのエラーはオフになります。 開発モードでは、 '`development`' を使うことが推奨されます。 複数の環境の取扱い ページに、環境による違いについてのさらなる情報があります。

## magic_quotes_runtime

magic_quotes_runtime ディレクティブは、データベースからデータを取得するときにスラッシュを除去する必要がないよう、 システムが初期化されるときに OFF にされます。

# ベストプラクティス

送信された POST データ、COOKIE データ、URI データ、XML-RPC データあるいは、SERVER 配列($_SERVER)のデータでさえ、 アプリケーションでデータを受け取る前に、次の3つのステップを実施することをおすすめします:

1. 危険なデータをフィルタリングする。
2. データが正しい型、長さ、サイズなどであることを確かめるため、検証を行う (ときどき、このステップはステップ1と置き換えられます)。
3. データベースにデータを送信する前にエスケープ処理を行う。

CodeIgniter では、この処理を支援するため次の機能が利用できます:

- ## XSS フィルタリング

  CodeIgniter にはクロスサイトスクリプティングフィルタがあります。このフィルタは、 悪意のある JavaScript を埋め込むのに使用される一般的な方法や、クッキーハイジャックや、 その他の危害を及ぼすものと思われる他のタイプのコードがデータに利用されていないかどうかを探します。XSS フィルタについては、こちらで説明しています。

- ## データのバリデーション(検証)

  CodeIgniter には、データの検証、フィルタリング、前処理を行うのを支援する フォームバリデーション(検証)クラスがあります。

- ## データベースへデータを追加する前に全データをエスケープする

  エスケープ処理をしないでデータベースにデータを記録してはいけません。 クエリ の説明をしているセクションでさらに詳しい情報をご覧ください。