今回はセッションハイジャックについて。WEB系では必須といえるでしょう。
Contents
セッションハイジャックとは?
WEBアプリケーションで使われているセッションID(利用者を識別するための情報)を使って、セッション管理を行うが、このセッションIDに不備がある場合、このセッションIDを不正に取得され、利用者になりますましてアクセスされてしまう。
似たようなものとしてセッションID固定化(悪意のあるユーザーがセッションIDを意図的に第三者に使わせること)という手法もある。
被害
- ログイン後の利用者のみが利用可能なサービスの不正利用や個人情報の改ざん(金銭処理を伴ったり、非公開情報を扱うサイト、会員サイトは要注意)
対策
- セッションIDを推測が困難なものにする(乱数発生などを行う)
- セッションIDをURLパラメータに格納しない。(cookieかhiddenで渡す)リファラ属性で読み取られる可能性あり。
- HTTPSで利用する場合、Cookieにはsecure属性を加える
- ログイン成功後に新しいセッションを開始する。
- ログイン成功後に既存のセッションIDとは別に秘密情報を発行し、ページ遷移ごとにその値を確認する
- セッションIDをCookieにセットする場合、有効期限に注意する
Cookieについて
SessionIDはCookieに保存するのが基本。
そしてCookieの属性などについて
Cookieの属性など
Domain
ブラウザがクッキー値を送信するサーバーのドメイン。ここを指定することでドメインを指定できます。ただ、設定しなければ基本的にクロスドメインはNGになります。
Path
特定のPathのみで有効になるようにできます。
Expires
有効期限。ない場合にはブラウザの終了までになるまで。
Secure
SSLの場合のみ、クッキーを送信
HttpOnly
trueにすることでJavaScriptでのクッキーの読み取りを不可にします。
またWEBサーバーのセッションIDの項目に関して。
sessionの制御で重要なため覚えておきましょう。
1 2 3 4 5 6 |
#セッション IDをクッキーに保存するかいなか session.use_cookies On(Off) #セッション IDをクッキーのみに保存 session.use_only_cookies On (Off) #URLにセッション IDを自動埋め込みする sesssion.use_trans_sid On(Off) |