skillup

技術ブログ

サーバー・ネットワーク

セッションハイジャック

投稿日:2017年2月3日 更新日:

今回はセッションハイジャックについて。WEB系では必須といえるでしょう。

セッションハイジャックとは?

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の制御で重要なため覚えておきましょう。

参考リンク

IPA 安全なウェブサイトの作り方

安全なWebアプリケーションの作り方

-サーバー・ネットワーク
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

Apacheでのリバースプロキシ

jenkinsの復習をしていたんですが、持ってたVPSサーバーにjenkins環境を構築、jenkinsのURLをサブドメインにし、アクセスした時に別ポートに飛ばす仕様にしました。 前提条件として下記 …

no image

OSI参照モデル イーサネットとMACアドレス

OSI参照モデルのレイヤー1とレイヤー2で必要不可欠な規格がイーサネットです。 有線ネットワークであればほぼこの規格を採用していると思って間違いないでしょう。 MACアドレスでコンピューターを識別する …

no image

php-fpmトラブル(nginxが競合?)

php-fpmが急に停止になるトラブルがあったので、ちょっとメモ。 php-fpmを再起動しようとしても下記のようなエラーが・・・

p …

no image

mod_rewriteについて

本日はapacheのmod_rewriteについて。 例えばget句に郵便番号を付けて、住所を出力するWEBプログラムがあるとします。 この場合、そのままだと[crayon-6675221200753 …

no image

SSHのfinger printに関して

今まで何気なくやっていることをあまり実は理解していない・・なんてことが多いもんで、最近は復習の必要性を感じています。 今回のお題はSSHのfinger printです。 初めてSSH先に接続するときに …

アーカイブ