セッション管理
PHPでセッション管理を行うのはとても簡単です。
PHP4.0 から標準でサポートされています。
セッションが有効にならない?
セッションに値を入れるページだけでなく、
セッションを用いるページにはすべて session_start() ; をいれてください。
●test1.php
<?php
session_start() ;
?>
セッションの有効範囲など
PHPのセッションとフォームデータをPOSTで受け渡した場合に、
IEの戻るボタンで戻ると「ページの有効期限切れ」の警告が出てしまいます。
解決方法は、次の一行をPHPファイルの最初のほうに置きます。
session_cache_limiter('private, must-revalidate');
、session_cache_limiterの引数はnone/nocache/private/private_no_expire/publicのいずれかの値しか受け付けません。
その他の値をセットすると無効扱いされて、noneを指定した場合と同じ(つまりキャッシュ制御ヘッダが送出されなくなる=普通にキャッシュされる?)となります。
私の方でもsession_cache_limiterに"private, must-revalidate"を設定したらキャッシュ制御ヘッダが送信されてこないことを確認しました。(PHP 5.2.3を
●test1.php
<?php
session_cache_limiter('private, must-revalidate');
session_start() ;
?>
セッション管理のセキュリティ
セッション管理機能を利用したとき、第三者にセッションIDを知られると、簡単に「なりすまし」というセキュリティ上の危険にさらされます。
クッキーや URLに他人のセッションIDをセットしてリクエストを行うだけで、認証を通さず他人に成りすますことができてしまうので、セッションIDを第三者が見ることができないよう最新の注意を払う必要があります。
クッキー内にデータを格納するのは危険が伴います。クッキー情報は極めて脆弱で信頼性にかける欠点があります。セッションのためにクッキーを使うときには、クッキー内に納められるクライアントの IPアドレスを暗号化したり、セッション情報の中の IPアドレスを保存して、違う IPアドレスからリクエストを遮断するといった方法があります。
セッションIDの漏洩は、以下のような要因で発生する場合があります。
あてずっぽうの IDをリクエストする
ネットワークの通信経路で傍受する
クライアントのクッキーをのぞく
HTTPヘッダの Refere を参照する
重要な情報を扱う場合、SSLの利用や、クライアントユーザへの呼びかけを行うことで、セッションIDの漏洩に対して細心の注意を払うようにしたり、また、セッション中部分的にパスワードを要求することも選択肢の1つでしょう。