またお世話になります。
いつも的確な回答を頂いて助かっていますm( __ __ )m
【仕様】
・ ログイン認証ページのみ SSL で、それ以外のページは 【非SSL】 です。
・ ログイン認証時にセッションIDをクライアントのクッキーに保存し、サーバー側では MySQL にセッションIDとログイン情報を保持します。
・ 認証以降のページでは、クライアントから送信されてくるクッキーセッションIDを元に MySQL のデータと照合し、ユーザーのログイン状態を維持します。
・ 言語は PHP を使っています。
よくあるセッション管理サイトだと思います。
そして、セッションIDさえ盗まれなければセキュリティとして問題無いと考えています。逆に言うとセッションIDが盗まれると極端に弱いと思います。
【私の考える脆弱性】
・ ログインページ以外が 非SSL ということから、セッションIDの盗聴が可能かと思います。
・ 普通に使用していても悪意あるサーバーを経由したらトレースされて簡単にセッションIDが抜かれると思います。
・ ログインした状態のユーザーが怪しいリンクをクリックしてクロスサイト攻撃でクッキーを抜かれる可能性もあります。
質問は、なぜ、こういった多くの問題が予測できるのに
この「教えて!Goo」の認証もログインページはSSLですが、それ以外は非SSLです。といった具合に多くのサイトがこのような認証方式を取っているのか?
もう一つ質問は、私は先に上げたような脆弱性を防ぐ方法がわからないのですが、何か画期的な方法でセッションハイジャックなどを防御しているのでしょうか?
もしくはセッションIDが盗まれてもそのセッションIDでのアクセスを無毒化するような方法があるのでしょうか?
以上です。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>2つ目の質問についてですが、セッションライフタイムを1時間にするというのは正規のログイン中のユーザーも1時間経ったら再ログインが必要ということでしょうか?
いろいろ考え方はあると思いますが、
最後にアクセスされてからの時間の場合もあるでしょうし、最初のログインからの時間から考える場合もあると思いますよ
Okwaveは最終ログインから24時間?なのかな?ときどきログイン要求されますね
webショップの決済開始~決済終了画面までのセッションは15分程度のところもありますね~
あ!なるほど!わかった気がします!
確かに、決済画面のまま晩御飯を食べて戻ってきたらタイムアウトしてしまって最初から入力し直した事があります(;´д⊂)
その辺はサイトの仕様ということになるわけですね。
色々と丁寧に教えていただいてありがとうございましたm( __ __ )m
すごくわかりやすかったです。
No.1
- 回答日時:
>この「教えて!Goo」の認証もログインページはSSLですが、それ以外は非SSLです。
といった具合に多くのサイトがこのような認証方式を取っているのか?SSLの公開鍵方式はサーバへの負担が大きい(処理が重い)から、必要最低限の部分に使用している
サーバで処理しきれない場合、暗号化、複合化をSSLアクセラレータ(ハードウェア)で行うこともあるくらいです
>もう一つ質問は、私は先に上げたような脆弱性を防ぐ方法がわからないのですが、何か画期的な方法でセッションハイジャックなどを防御しているのでしょうか?
よくあるのが、セッションのライフタイムを1時間等にするケース
これだと、1時間以内にハイジャックが成功しないといけないですね
あと、セッションIDを与えたクライアントのIPアドレスを組で管理する
セッションを盗聴されてもIPが違うので不正アクセスと判断できる
ユーザ側からの操作では、利用しなくなったセッションはログアウトで無効化する
>もしくはセッションIDが盗まれてもそのセッションIDでのアクセスを無毒化するような方法があるのでしょうか?
上記のような方法かな
回答ありがとうございます。
なるほど。一つ目の質問については納得です。
SSL のサーバー、クライアントへの負荷は巨大なのですね。
2つ目の質問についてですが、セッションライフタイムを1時間にするというのは正規のログイン中のユーザーも1時間経ったら再ログインが必要ということでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのセッション有効期限について 5 2023/06/14 12:40
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- その他(セキュリティ) システムのセキュリティに詳しい方〜 飛行機のチケット使わなかったときのチケット費用補償保険/旅行キャ 1 2022/04/06 09:49
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- PHP ここで言うトークンの意味を教えてください。 3 2022/08/24 03:03
- Yahoo!メール yahoo IDの事で教えて欲しい事があります。 同じ携帯番号で2つのアカウントを持っていたのですが 1 2022/05/10 12:36
- PHP ログインした掲示板ですが、直接開かないような設計するには? 2 2022/10/29 16:30
- システム なぜ「SNS」介入にはメールアドレスが必要なの? 1 2023/05/12 05:17
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
http<>https間のでセッションID...
-
学校の授業で困っていることが...
-
HTTPヘッダー内での順番などに...
-
PHPのセッション有効期限について
-
PHP cookieの値が更新されない...
-
二人でWEBアプリを動かしている...
-
Dosブロンプトでtabを出力したい
-
wordの差し込み印刷で文字...
-
phpでcookieがうまく保存されない
-
switch()文で値の大小比較
-
バッチファイルでpingの結果を...
-
syntax error, unexpected 'ech...
-
VBA コレクションに2次元配列...
-
「取得先」という表現について
-
PHPで訪問回数を表示するカウン...
-
shシェルスクリプト 空白行の...
-
アクセスの度にIPアドレスを変...
-
ローカルのコンピュータ名を取...
-
【C#】DataGridViewの最大列数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
ログイン画面をはさんだ後、自...
-
PHPのセッション有効期限について
-
セッションのスコープ(有効範...
-
Sessionの上限について
-
セッション変数にパスワードを...
-
ブラウザを閉じた後もセッショ...
-
ログインしたら他からログイン...
-
別ブラウザ間でセッションの値...
-
Cookieを利用したユーザ管理
-
複数のサーバで運営する場合の...
-
学校の授業で困っていることが...
-
sessionとcookieの設定内容の区別
-
「ログイン機能を持たせる」説...
-
301リダイレクトはセッション引...
-
PHP cookieの値が更新されない...
-
セッション ID とセッション名...
-
sessioncookieをではなくcookie...
-
管理者としてログイン
-
セッションのタイムアウト管理
おすすめ情報