Ads by Google
新しい記事を書く事で広告が消せます。
WEBアプリケーション内で値をページ間で持ちまわす方法はいくつかあります。その中でもよくあるのがセッションを使うものです。
セッションとはユーザーに一時的なパスワードを発行し、そのパスワードを確認してサーバーに保存されているユーザー固有の情報を利用させるものです。パスワードはセッションIDと呼ばれます。セッションIDはクッキーに保存することが多いですが、クッキーが使えないときはURLの中に追加してGETで回します。
ということは、このセッションIDをクラッカーに見破られるとそのセッションの持ち主を詐称されてしまうわけです。これがセッションハイジャックです。
セッションIDを連番など推測しやすいものにしていると、この攻撃を受ける可能性が高くなるため、セッションを利用する場合は予測困難なセッションIDをユーザーに出すことが大事です。php付属のセッション関数を使えば簡単です。
もしセッション関数では仕様に合わない場合はmd5()などの暗号化関数を利用して自分で暗号化します。
また、同じセッションIDを使い続けていると盗まれる可能性が高くなるため、保持する情報の重要性に応じて有効時間(ライフタイム)を設けておくことも大事です。たとえば銀行のシステムですと、盗まれては大変なことになるため30分以下の値が設定されていることが多いです。みん動の場合は個人情報、機密情報などの重大な情報は持たないためセッションIDの寿命はとても長くなっていますが、これは例外です。
phpのセッション関数を使っているなら、session_cache_expire (30);で30分に出来ます。デフォルトは3時間です。
さらにセキュアにしたいならsession_regenerate_idをつかえばセッションIDをワンタイムパスワードのようにできます。ただしつくりによっては画面遷移次第で誤動作を起こしてしまうので注意が必要です。
セッションハイジャックの方法には予測の他に盗聴がありますが、これは通信の暗号化によって対抗することが出来ます。SSLの利用するわけです。漏洩がシリアスな結果を生む情報を取扱う場合は暗号化を利用するのが適切です。
ちなみに特にセキュリティの重要性が高い銀行のWEBシステムは、SSLによる通信暗号化+短いセッション有効時間がほぼ必ずと言っていいほど使われています。さらに+αとしてワンタイムパスワードや電子証明書、専用回線の利用が行われることがあります。
みんなの動画サーチ 現在の人気動画