• 締切済み

セッションハイジャックの対策方法について

wildcat-ypの回答

回答No.4

#1です。 私はIPアドレスも偽装可能と書いたつもりなのですが・・・ 携帯専用ページ等でキャリアからの接続しかできない仕様であればほぼ不可能ですが、一般的にインターネットを通ってきた物であればIPアドレスもそれほど信用できるものではありません。とくに海外経由の通信の場合は。 なので、SSLが全ページへの適用が不可能という場合、SSL以外のコンテンツについては漏えいは覚悟するべきです。 確かにセッションハイジャックの対策としていろいろと設定を厳しくして、ハイジャックの難易度を上げることは常に必要ですが、かといって、暗号化していない通信に重要な情報を載せて良い理由にはなりません。 大事なところ以外はハイジャックされても大丈夫な作りにするか、後は多少お金をかけてでもSSL化するかだと思います。 SSLはそれほどサーバー負荷は高くないと思いますし、そんなに負荷がかかるほどのアクセス数があるのであればアクセラレータを入れても十分元がとれるシステムだと思うのですが・・・ DBに比べて、WEBサーバなんて数ランク性能を下げても十分だと思います。まさか、WEBとDBが同じサーバーということはありませんよね?

noname#246547
質問者

補足

返答ありがとうございます >私はIPアドレスも偽装可能と書いたつもりなのですが・・・ 偽装可能とのことですので、質問の方法はまったくセキュリティ向上の意味を成さないと判断されたということですね? >一般的にインターネットを通ってきた物であればIPアドレスもそれほど信用できるものではありません。とくに海外経由の通信の場合は。 この件ですが、なぜ正規のユーザが海外Proxyを経由して匿名でサービスを受ける必要があるのでしょうか? また、こんな回りくどい方法で接続する正規のユーザがどれほどいるのでしょうか? この回答は正規のユーザがProxyを経由して偽装する可能性があるからIPチェックは無意味と取れるのですが・・・ また、ハイジャッカーが偽装のために海外PorxyのIPを埋め込んで(あるいは海外Proxy経由して)データ送信してきても、 正規ユーザはこの匿名Proxyを利用していないはずなので、IPアドレスチェックでIPアドレス不一致となり偽装は簡単に見破れると思いますが。 次に、「IPアドレスも偽装可能」の件ですが、 CGIで読み取れるREMOTE_ADDRはHTTPヘッダに含まれているわけではなく、 IPパケットのIPヘッダ内の送信元IPアドレスです よって、単にIPヘッダの送信元IPアドレスを置き換えるだけでは偽装は出来ません なぜならば、IPパケットにはシーケンス番号があり、この番号通りにパケットの送受信がされなければならないからです 単にIPヘッダだけをすりかえてもシーケンスが連続していないため、サーバ側のOSがパケットを破棄します また、ハイジャッカーがIP偽装するとしたら、正規のユーザのIPアドレスで偽装することになると思いますが、この場合、サーバからの返信パケットはハイジャッカーの端末に送られず、正規のユーザの端末に送られることになりハイジャック失敗に終わると思いますが。 >確かにセッションハイジャックの対策としていろいろ・・・ これは、質問の趣旨から外れています セキュリティ向上のためにSSLがどれほど効果があるかをお聞きしているわけでは有りません SSLが有効であることは存じておりますし、全てのページをSSL通信にしてしまうことがとても有効であることも存じております >大事なところ以外はハイジャックされても大丈夫な作りにするか この方法の一つとして、IPアドレスチェックの有効性について質問させていただいているのですが・・・ >DBに比べて、WEBサーバなんて数ランク性能を下げても十分だと思います。まさか、WEBとDBが同じサーバーということはありませんよね? 私はwebショッピングサイト等の運営は一切しておりません 今回の質問はセッションハイジャックを防ぐ一つの方法として有効か、この方式の理論を問うております

関連する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を変更する方法はあるのでしょうか? いろいろ調べたのですが直接関係するような内容は見つけることができず、 質問させてもらいました。 よろしくお願いします。

  • 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でのアクセスを無毒化するような方法があるのでしょうか? 以上です。 よろしくお願いします。