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

参考リンク

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

http://sawara.me/php/2348/(PHP)

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

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

執筆者:


comment

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

関連記事

no image

DNSの仕組み

本日はDNSについて。 とりあえず要点のみ DNSのざっくりとした仕組み ネットワーク上での住所を決める仕組み。 本来はIPがその役割を果たしている. http://211.111.111.111など …

no image

yumのリポジトリについて

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

no image

locationディレクティブについて

nginxを実務で使うときに重要になってくるlocationディレクティブについて。 ここでは実際のlocationディレクトリとマッチするURLのパターンを見ていきたいと思います。 Contents …

no image

PHPのheroku(ヘロク)へのデプロイ

有名なPaasのサービスであるherokuをちょっといじったのでその時のメモなどを。 Contents1 アカウント開設2 Heroku | Cloud Application Platform3 デ …

no image

大規模Webサービス技術入門 イントロ

一応WEBサービスを日々改修していますが、データが日々ふえ、大規模なサービスの対処法などを勉強する必要があるため、「大規模サービス技術入門」を少しずつ読んでいこうと思います。 ポイント データはディス …