プロが教えるわが家の防犯対策術!

またお世話になります。
いつも的確な回答を頂いて助かっていますm( __ __ )m

【仕様】
・ ログイン認証ページのみ SSL で、それ以外のページは 【非SSL】 です。
・ ログイン認証時にセッションIDをクライアントのクッキーに保存し、サーバー側では MySQL にセッションIDとログイン情報を保持します。
・ 認証以降のページでは、クライアントから送信されてくるクッキーセッションIDを元に MySQL のデータと照合し、ユーザーのログイン状態を維持します。
・ 言語は PHP を使っています。

よくあるセッション管理サイトだと思います。
そして、セッションIDさえ盗まれなければセキュリティとして問題無いと考えています。逆に言うとセッションIDが盗まれると極端に弱いと思います。

【私の考える脆弱性】
・ ログインページ以外が 非SSL ということから、セッションIDの盗聴が可能かと思います。
・ 普通に使用していても悪意あるサーバーを経由したらトレースされて簡単にセッションIDが抜かれると思います。
・ ログインした状態のユーザーが怪しいリンクをクリックしてクロスサイト攻撃でクッキーを抜かれる可能性もあります。

質問は、なぜ、こういった多くの問題が予測できるのに
この「教えて!Goo」の認証もログインページはSSLですが、それ以外は非SSLです。といった具合に多くのサイトがこのような認証方式を取っているのか?

もう一つ質問は、私は先に上げたような脆弱性を防ぐ方法がわからないのですが、何か画期的な方法でセッションハイジャックなどを防御しているのでしょうか?

もしくはセッションIDが盗まれてもそのセッションIDでのアクセスを無毒化するような方法があるのでしょうか?

以上です。
よろしくお願いします。

A 回答 (2件)

>2つ目の質問についてですが、セッションライフタイムを1時間にするというのは正規のログイン中のユーザーも1時間経ったら再ログインが必要ということでしょうか?


いろいろ考え方はあると思いますが、
最後にアクセスされてからの時間の場合もあるでしょうし、最初のログインからの時間から考える場合もあると思いますよ
Okwaveは最終ログインから24時間?なのかな?ときどきログイン要求されますね
webショップの決済開始~決済終了画面までのセッションは15分程度のところもありますね~
    • good
    • 0
この回答へのお礼

あ!なるほど!わかった気がします!

確かに、決済画面のまま晩御飯を食べて戻ってきたらタイムアウトしてしまって最初から入力し直した事があります(;´д⊂)

その辺はサイトの仕様ということになるわけですね。

色々と丁寧に教えていただいてありがとうございましたm( __ __ )m
すごくわかりやすかったです。

お礼日時:2009/10/10 16:23

>この「教えて!Goo」の認証もログインページはSSLですが、それ以外は非SSLです。

といった具合に多くのサイトがこのような認証方式を取っているのか?
SSLの公開鍵方式はサーバへの負担が大きい(処理が重い)から、必要最低限の部分に使用している
サーバで処理しきれない場合、暗号化、複合化をSSLアクセラレータ(ハードウェア)で行うこともあるくらいです

>もう一つ質問は、私は先に上げたような脆弱性を防ぐ方法がわからないのですが、何か画期的な方法でセッションハイジャックなどを防御しているのでしょうか?
よくあるのが、セッションのライフタイムを1時間等にするケース
これだと、1時間以内にハイジャックが成功しないといけないですね
あと、セッションIDを与えたクライアントのIPアドレスを組で管理する
セッションを盗聴されてもIPが違うので不正アクセスと判断できる
ユーザ側からの操作では、利用しなくなったセッションはログアウトで無効化する
>もしくはセッションIDが盗まれてもそのセッションIDでのアクセスを無毒化するような方法があるのでしょうか?
上記のような方法かな
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

なるほど。一つ目の質問については納得です。
SSL のサーバー、クライアントへの負荷は巨大なのですね。

2つ目の質問についてですが、セッションライフタイムを1時間にするというのは正規のログイン中のユーザーも1時間経ったら再ログインが必要ということでしょうか?

お礼日時:2009/10/10 11:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!