- 締切済み
セッションハイジャックの対策方法について
http://okwave.jp/qa5356018.html 上記の質問の便乗質問です 質問1 上記の質問内#5で、セッションハイジャック対策として、 セッションIDとUserAegntを組みで管理しハイジャックリスクを軽減する また、この方法を使用しているサイトも存在するとの記述がありますが、 セッションIDを盗聴出来る(つまりHTTPヘッダを読み取る)のであれば、必然的にUserAgentも盗聴されるので、この方法でハイジャックリスクを低減することは出来ないと思うのですが、いかがでしょうか? そもそも、私のDoCoMoの携帯はUserAgentを送らないし・・・ 質問2 同じく#5で 「IPアドレスチェックはセッションハイジャック対策にならない」 とありますが、たしかに携帯等からアクセスするとIPが著しく変化する可能性がありますが、無限に変化するわけではありません しょせん、携帯会社が保有するIPの範囲内です たとえばDoCoMoであれば、IPのホストアドレスの数はたかただか4,5種類です よって、「IPアドレスのホストアドレスをチェックすることで送信元を限定」し、ハイジャックチェックをすることは可能だと思うのですがいかがでしょう? もちろん、DoCoMoネットワーク内部のハイジャッカーには対応できませんが、簡単に偽装可能なUserAgent(たとえば、FirefoxはUserAgentを変更する項目がある)でチェックするよりはるかに有効だと思います 携帯以外で企業内部からProxy経由で接続してきた場合、これもIPアドレスが変化する可能性があるようですが、企業も無限にIPを保有しているわけではなく、特定のホストアドレス内の範囲のはずです よって、同一セッションIDの接続でIPが変化した場合、ホストアドレス上位24bitまたは16bitが変化したかで不正接続かどうかを判断できると思います もちろん、同一企業内にハイジャッカーが居たら上記の方法では判別できませんが、企業内のセキュリティ不備までホームページ提供者(セッションIDを提供する側)が考慮してあげる必要は無いと思っています また、IPアドレスの変化量に応じてセッションIDのライフタイムを減らし、リスクを低減するような機能もついでに追加しても有効ではないでしょうか? つまり、IPが変化するネットワークからのアクセスは、リスク軽減のためセッションIDのライフタイムをデフォルト30分を15分に減らすなど。 また、IPアドレスに変化がない場合は、当然上記のチェックはする必要はなく、クライアントを信用します このような方法でセッションハイジャック対応(もちろん100%ではないが、かなり有効だと思う)出来そうですが、 いかがでしょうか? また、このような方法でチェックしているサイトはありますでしょうか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Lchan0211
- ベストアンサー率64% (239/371)
- wildcat-yp
- ベストアンサー率37% (303/813)
- pokapoka1980
- ベストアンサー率41% (48/117)
- pokapoka1980
- ベストアンサー率41% (48/117)
- wildcat-yp
- ベストアンサー率37% (303/813)
関連するQ&A
- セッションハイジャックの対処法について
こんばんは。お世話になっております。 以前、セッションハイジャックを防ぐ方法として、 session_regenerate_id(); を用いて、ファイル(?)を次々と変えていけば良いと、いくつかのサイトで読んだ事があり、現在開発中のスクリプトにも盛り込んでいるのですが、これだと(windowsでいうtmpフォルダ内の)ファイルが膨大な量になってしまう事に気が付きました。 こういった状況はセッションハイジャックを防ぐ方法として仕方のない事なのでしょうか?それともファイルを削除するスクリプトもあるのでしょうか? ネットで検索をして調べてはいるものの、調べ方が悪いのか、セッションハイジャックの対処法は紹介されているものの(とは言っても、上記だけしか把握してませんが…)、その後の対処に関しての紹介が見つからなかったもので・・・ お忙しい中恐縮ですが、アドバイスなどいただけたら幸いに思います。
- ベストアンサー
- PHP
- sessionについて
こんばんは。お世話になっております。 題名にあるようにセッションに関してアドバイスいただきたく投函させて頂きます。 (他に似たような質問はあったものの、上手く解釈できなくて・・) 現在、DBに登録された会員のみがログイン出来る機能を有したサイトを作成しておりますが、DB参照の後、idなどを、セッション変数に代入し、そのデータを持ち歩いています。 書籍や他の方からセッションIDのことを耳にしますが、いまいち、その必要性というものを理解する事が出来ないのですが、このセッションIDは、どこでどういったところで必要になってくるものなのでしょうか? また、チェックボックスなどで任意により、自動でログインする機能を持たせるとした場合、クッキーを用いるという事までは理解したのですが、調べた範囲では、先のセッションIDをクッキーに保存させる・・という内容を多くみました。 現在、セッションハイジャックを避けるようサーバー側に保存されるセッションIDを書き換える設定をしているのですが、このような場合はクッキーを用いての自動ログインはどうしたらいいのだろう?と糸口が見えずにいる次第です。 以下、アドバイスを頂戴したいことをまとめると、 1.ログイン状態を認識させるためには、セッション変数だけで事足りるのか?また、この場合においてのセッションIDの意味するとは? 2.セッションハイジャックを避けるためサーバー側に保存させるセッションIDを随時変更している場合、自動ログイン機能を用いるには、どのような流れ(内容)になるのか? です。お忙しい中恐縮ですが、アドバイスなど頂けたら幸いに思います。宜しくお願い致します。
- ベストアンサー
- PHP
- phpのセッションについて質問です
現在、phpのセッションについて学習しています。 開発環境はxamppでMySQLデータベースにPDOで接続しています。 セッションについていくつか質問があります。 セッションを使った認証の流れですが、 ログインフォーム画面で、session_start()し、ログインの認証が成功したらsession_regenerate_idで新しいセッションを発行⇒ログインが必要な画面でセッションの有無を確認 という流れで良いのでしょうか? セッションハイジャック対策にsession_regenerate_idをするようですが、 これは全てのページで毎回行ったほうが良いのでしょうか? セッションIDの受け渡しはcookieに保存する方法とURLに含む方法があり、 セッションハイジャック対策について記述しているサイトではcookieが推奨されている雰囲気ですが、 PHPマニュアル(http://php.net/manual/ja/session.idpassing.php)では信頼性がないとあります。 どちらを使うのが良いのでしょうか? セッションの有無のチェックはsession_start()を記述するだけでサーバーが行ってくれるのでしょうか? $SESSIONにセッションIDを保存してissetで調べるといった記述が必要なのでしょうか? メールアドレスとパスワードでのログイン認証を実装したいのですが、 その場合、マイページでユーザー情報を表示したい際、ログイン時に入力したメールアドレスを$SESSION[email]に格納し、マイページのphpプログラムにて、$SESSION[email]に格納されたメールアドレスを検索条件にしてSELECTで他の情報を取得したら良いのでしょうか? メールアドレスを$SESSION変数で受け渡しするのはセキュリティ上危険でしょうか?(危険であれば内部管理用のユーザーIDを$SESSIONに格納してデータを取得しようと思います。) 基本的なセッションの知識がないため、質問の数が多くなってしまいましたが、 答えられる範囲で良いのでご回答頂けると有難いです。
- ベストアンサー
- PHP
- セッションについて
セッションはたとえブラウザを落としても維持されると思うのですが、どのような情報から同じものからのアクセスであるとサーバは見分けているのですか? ipアドレス?MACアドレス?ホスト名?ブラウザ? しかしこれだけだとOSに別アカウントで入ったときには、同じセッションを使われるのではないかと思いました。しかしそんなことはないだろうと思うので、どなたかどのような情報からサーバが個人を識別しているか教えていただけると助かります。
- ベストアンサー
- その他([技術者向] コンピューター)
- ASP.net MVC セッションハイジャック対応
どうにも困ってしまい初めて質問させていただきます。 現在、ASP.NET MVC 2.0で運用保守しているモバイル会員向けのサイトがあります。 従来のWeb.Configは <sessionState mode="InProc" timeout="30" regenerateExpiredSessionId="true" cookieless="true"/> のようにしており、URLにセッションIDが表示されるように設定されていました。 これがセキュリティ上問題ということで、ログインの前後でセッションIDを変更することになり、 ログイン処理時に Session.Abandon(); を実行して、セッションを破棄して、ログイン後のページでセッションIDが変更するようにしており これはうまく想定通りにいっていました。 その後、最近スマフォのアクセスの方が増えてきたこともあり、極力URLにセッションIDは表示したくないということでWeb.Configを以下のように変更しました。 <sessionState mode="InProc" timeout="30" regenerateExpiredSessionId="true" cookieless="AutoDetect"/> スマフォやPCからのアクセスでは想定通りURLにセッションIDが表示されることもなく、 ログイン前後でセッションIDが変わりました。 しかし、クッキー非対応の携帯で確認すると、URLに表示されるセッションIDが ログイン前後で変更されなくなってしまいました。 iモードシュミレータを使いデバッグ実行で直接セッションIDを確認しても、 やはり変わっていませんでした。 AutoDetectでクッキー非対応の端末でセッションIDを変更する方法はあるのでしょうか? いろいろ調べたのですが直接関係するような内容は見つけることができず、 質問させてもらいました。 よろしくお願いします。
- ベストアンサー
- Microsoft ASP
- perl/cgi セッションについて
www.ksknet.net/movabletype/archives/2004/09/cgisession.html セッションについて上記を参考にしています。 セッションIDを付与しているのはソースから分かります。 ただ、付与したセッションをチェックするのが分かりません。(認証成功後のページからの全ての遷移先ページでセッションが有効かどうかチェックしますよね?) index.html ↓ログイン成功。セッションを付与 aaa.cgi ↓セッションをチェック bbb.cgi ダイレクトに(セッションを付与されていない状態) bbb.cgi をアクセスしたときにアクセスできないようにならなければ意味がありませんので・・・。 $session->id()に値が入っているかどうかのチェック文を認証をかけたい全てのページに仕込めばよいのでしょうか? 文章おかしくてすみません・・ よろしくお願いいたします。
- ベストアンサー
- CGI
- IPアドレス/ホスト名 /UserAgent/て何ですか?メールを送信した相手に分かるものですが?
IPアドレス/ホスト名 /UserAgent/て何ですか? 分かりやすく教えてください。 先日、懸賞の応募と問い合わせをしました。 受付をしたと確認の返事が届いたのですが IPアドレス/ホスト名 /UserAgent/も記載付で届きました。 当方の情報と思いますが、 相手にIPアドレス/ホスト名 /UserAgent/まで分かる物ですか? フリーメールで応募と問い合わせをしたのですが… 個人情報のような気がして… よかったら詳しく教えてください
- ベストアンサー
- その他(メールサービス・ソフト)
- 掲示板荒らし対策方法
FC2の掲示板を使っているのですが 携帯電話で嫌がらせ内容の書き込みをされます。 IPアドレスは、頻繁に変わる為、イタチごっこになります。 om126192197217.1.openmobile.ne.jp これがホストです。 良い方法があれば教えてください。
- 締切済み
- ネットトラブル
- セッションIDについて
セッション管理について、まったく経験がないので、アドバイスお願いいたします! 現在のWEBシステムですが、なぜかIPアドレスのみでしかアクセスできない作りになっています。 それでは困るので、ドメイン名でアクセスできるようにと改修をお願いしたところ、 今度はドメイン名のみでしかアクセスできないがいいか?・・・と質問が届きました。 普通、WEBシステムを使うほうから考えますと、 IPでアクセスしようが、ドメインでアクセスしようが どちらでも動くのが当たり前のように思うのですが。 プログラムの作りでそうなってるのかもしれませんが これって変ですよね? それともよくあることなのでしょうか? 理由を確認したところ、 サーバ名を用いたURLでの構築を行っていないため、ページ遷移を行うとログインエラーが発生する箇所があるとの事。 システムは管理者の機能と一般の機能があり、当然別々の動きをしなければならないのですが 推測するに、IPアクセスだったら管理者、ドメイン名だったら一般というような判断をしているのでは?と思われます。 IPアクセスのみというのを知らずに、ドメイン名でアクセスして試験をしていたら 途中でURLがIPに変わり(cgiでphpが動いて)、エラーになったのです。 session情報は同ドメイン上で有効であるため、 IPでアクセスした場合とドメイン名でアクセスした場合ではセッション情報を引き継げないため、 ログイン情報無しと判断されるため・・・ が原因ということなのですが 実際、SESSIONIDにはどんな内容が入ってくるのでしょうか? 管理者と一般のふたつの機能をセッションIDを使って、切り分けるのはできないことなのでしょうか? セッションIDは使ったこともないので問題外かもしれませんが 自分だったら、今は管理者、今は一般・・・というような情報をhiddenに持つとか、 リンクできる情報をテーブルに持つとかするかな... なんて思いながら、セッションID ってこんな時、どうやって使うのかな? と疑問だらけです。 セッションIDを使って、ふたつの機能を使い分けることはできないのでしょうか? または、ふたつの機能を切り分けできる他の方法などありましたらアドバイスいただけないでしょうか?
- ベストアンサー
- CGI
- セッション脆弱性を克服するには?
またお世話になります。 いつも的確な回答を頂いて助かっていますm( __ __ )m 【仕様】 ・ ログイン認証ページのみ SSL で、それ以外のページは 【非SSL】 です。 ・ ログイン認証時にセッションIDをクライアントのクッキーに保存し、サーバー側では MySQL にセッションIDとログイン情報を保持します。 ・ 認証以降のページでは、クライアントから送信されてくるクッキーセッションIDを元に MySQL のデータと照合し、ユーザーのログイン状態を維持します。 ・ 言語は PHP を使っています。 よくあるセッション管理サイトだと思います。 そして、セッションIDさえ盗まれなければセキュリティとして問題無いと考えています。逆に言うとセッションIDが盗まれると極端に弱いと思います。 【私の考える脆弱性】 ・ ログインページ以外が 非SSL ということから、セッションIDの盗聴が可能かと思います。 ・ 普通に使用していても悪意あるサーバーを経由したらトレースされて簡単にセッションIDが抜かれると思います。 ・ ログインした状態のユーザーが怪しいリンクをクリックしてクロスサイト攻撃でクッキーを抜かれる可能性もあります。 質問は、なぜ、こういった多くの問題が予測できるのに この「教えて!Goo」の認証もログインページはSSLですが、それ以外は非SSLです。といった具合に多くのサイトがこのような認証方式を取っているのか? もう一つ質問は、私は先に上げたような脆弱性を防ぐ方法がわからないのですが、何か画期的な方法でセッションハイジャックなどを防御しているのでしょうか? もしくはセッションIDが盗まれてもそのセッションIDでのアクセスを無毒化するような方法があるのでしょうか? 以上です。 よろしくお願いします。
- ベストアンサー
- ネットワーク
お礼
返答ありがとうございます >セッションハイジャック対策に有効であるとは一言も言ってなく、 いやいや、http://okwave.jp/qa5356018.html は、セッションハイジャックの対策としてIP管理での方法を質問しています それに対しての回答でセッションIDとUserAgentで判断する方法を述べているわけなので、セッションハイジャック対策への対応の1手法として回答していますよ >これらの無線LAN(NATルータ)管理者が実は悪人で、 >パケットキャプチャして、セッションハイジャック この手法が、質問で上げたIPチェック方式の唯一の穴かなと考えています ですから、この穴をふさぐために、 さらに、1通信毎にランダムなIDをサーバから振り出し、次のクライアントからのリクエストにはこのランダムなIDを必ず送信してもらう方法も同時に行ったらどうでしょうか? パケットキャプチャして正規ユーザに成りすまして通信が成功した場合、 ハイジャッカーが一時的に通信成功しても、正規ユーザが通信を再開したら、正規ユーザの端末が保持しているIDがサーバと異なるため、ハイジャックが発生したと判断し、セッションIDを無効とし再ログインを促します あと、いろいろ返答している中で思ったのですが、 セッションハイジャックは#5の回答内にあるように、同一セグメント内の端末のセッションを盗聴するケースが最も高いような気がします そうしますと、IPチェック方式もあまり有効ではないのかな。 結局、ハイジャックの対応なんていちいちやっててもしょうがないのかな? 現在、ハイジャック対応をしているサイトはいくつもあると思いますが、 「最近のセキュリティという言葉に脊髄反射して」無駄にコストかけていることになるのかなと考えてしまいます