レシピファイルにCheckHijackコマンドを定義することにより、セッション・ハイジャック・チェック付き暗号化が行えます。PDELにおけるセッション・ハイジャック・チェック付き暗号化は、次の方式で実装しています。
キー項目 | 内容 | サーバ環境変数(注1) |
---|---|---|
ZFIP | ZF仕様のクライアントIP | (注2) |
IP | 単純仕様のクライアントIP | REMOTE_ADDR |
UA | ブラウザ種別 | HTTP_USER_AGENT |
LANG | 言語 | HTTP_ACCEPT_LANGUAGEおよびHTTP_ACCEPT_CHARSET(注3) |
APL | 任意情報 | 暗号化・復号時にPDELを利用するアプリケーションが指定する任意情報。これは端末識別番号が取得できるシステムや、クライアントIPをPDELのZFIP・IP以外の論理で取得するシステムでの利用を想定したキー項目です。 |
条件 | IPアドレス |
---|---|
サーバ環境変数HTTP_CLIENT_IPが設定されている場合 | サーバ環境変数HTTP_CLIENT_IP およびREMOTE_ADDRを連結した文字列 |
上記以外でサーバ環境変数HTTP_X_FORWARDED_FORが設定されている場合 | サーバ環境変数HTTP_X_FORWARDED_FOR およびREMOTE_ADDRを連結した文字列 |
上記2条件いずれにも該当しない場合 | サーバ環境変数REMOTE_ADDR |
上記論理はZendFrameWork(ZF。バージョンは1.12.0)の library/Zend/Controller/Request/Http.phpのgetClientIpメソッド を参考にしています。 ※厳密にはZFでは、HTTP_CLIENT_IPまたはHTTP_X_FORWARDED_FOR設定時は HTTP_CLIENT_IPまたはHTTP_X_FORWARDED_FORをクライアントIPとしてます。 ただ、おそらくHTTP_CLIENT_IPまたはHTTP_X_FORWARDED_FORは パブリックIPであるREMOTE_ADDRを含まないプライベートIP情報と思われるため 「REMOTE_ADDRを連結した文字列」をPDELではクライアントIPとしています。