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

シェルスクリプトでのsshログインとメール送信

久々にシェルスクリプトをやったんでその復習を。 応用範囲は結構広そうです。 Contents1 ファイルの読みこみ方2 関数の定義、使い方3 SSHログイン4 ssh鍵認証つきのログイン5 メール送信 …

no image

yumのリポジトリについて

CentOSでは様々なパッケージが用意されていますが、標準で使えるもの以外にもさまざまなリポジトリがあります。 Contents1 リポジトリ一覧2 有効、無効や指定してのインストールについて リポジ …

no image

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

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

no image

SQLインジェクション

セキュリティ関係の知識がぬるいのでちょっとお勉強。 知っていることもあるが復習もかねて勉強を。 Contents1 SQLインジェクションとは?2 被害3 対策4 参考サイト・書籍5 ソース SQLイ …

no image

vueの環境構築に関して(モジュールバンドラの比較やvue-cliコマンドなど)

vueをビルドする場合、一般的にはwebpackなどのモジュールバンドラを使うかと思います。少しまとめて置こうかと思います。 Contents1 モジュールバンドラ1.1 webpack1.2 lar …

アーカイブ