1. ホーム
  2. security

[解決済み] セッションハイジャックを防止する最善の方法は何ですか?

2022-07-10 08:25:33

質問

具体的には、サーバ上のセッションを識別するためにクライアントセッションクッキーを使用する場合についてです。

Webサイト全体にSSL/HTTPS暗号化を使用することが最善の答えで、中間者攻撃によって既存のクライアントセッションクッキーが盗聴されないという最高の保証があるのでしょうか?

そしておそらく2番目に良いのは、セッションCookieに保存されるセッション値自体に何らかの暗号化を使用することでしょうか?

もし悪意のあるユーザーがマシンに物理的にアクセスできたとしても、ファイルシステムを見て有効なセッションクッキーを取得し、それを使ってセッションを乗っ取ることができるのでしょうか?

どのように解決するのですか?

セッションの値を暗号化しても、効果はゼロです。セッション クッキーはすでに任意の値であり、暗号化しても、盗聴可能な別の任意の値が生成されるだけです。

唯一の本当の解決策はHTTPSです。サイト全体をSSL化したくない場合(パフォーマンス上の懸念があるのかもしれません)、機密性の高い領域だけをSSLで保護することで済ませられるかもしれません。そのためには、まず、ログイン・ページがHTTPSであることを確認します。ユーザーがログインするときに、通常のセッション・クッキーに加え、セキュア・クッキー(ブラウザがSSLリンクを介してのみ送信することを意味する)を設定します。次に、ユーザが機密性の高い領域にアクセスしたら、HTTPSにリダイレクトし、そのセキュア・クッキーの存在を確認します。本当のユーザーにはそれがありますが、セッション ハイジャック犯にはありません。

EDIT : この回答は元々2008年に書かれたものです。今は2016年であり、サイト全体をSSL化しない理由はありません。もうプレーンテキストのHTTPは必要ありません。