- ベストアンサー
IP アドレスの変動について
いつも的確な回答を頂いて助かっています。 またお願いしますm( __ __ )m ウェブアプリケーション側でクライアントの IP アドレスが取得できると思います。 ※ 例えば、PHP なら $_SERVER["REMOTE_ADDR"]; 1つ目の質問は、例えばクライアントが、http://www.hoge.co.jp/ に接続した時の IP アドレスがブラウザを閉じるまでの間に変動することはありえるのでしょうか?(可能性として 0% と言えるかどうか) 2つ目の質問は、クライアント PC を再起動したり、ネットワークを再接続したら IP アドレスは変動する可能性はあるんではないかとなんとなく想像できますが、ブラウザを再起動しただけで変動することもあるのでしょうか?(こちらも可能性として 0% と言えるかどうか) 期待する効果としては、私の運営するサイトへのアクセスがあったクライアントの IP アドレスがブラウザを閉じるまでの間、同じIPアドレスかどうかが保証したいのです。 以上です。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
他の方も書かれてる「インターネットに再接続したときにIPアドレスが変わる」といった事例の他に、 規模の大きい企業などで、ファイアーウォール(プロクシ)を通すために、 見かけ上ネット環境は変わってないのに、ページを見るたびに、サーバから見たIPアドレスが毎回変わる、なんていうところもあったりします。 また、プロキシを通せば、逆に異なるユーザーが同じIPアドレスからアクセスしてくるために、IPアドレスチェックはセッションハイジャック対策にならないという問題があります。 というわけで、IPアドレス+セッションIDでセッション管理するのは、 モバイル環境などでIPアドレスが変わった場合に対応するように、、 ・セッションIDベースで、IPアドレスが変わった場合は単に蹴るのではなく、再認証する ぐらいで、実用上は大多数の人にとっては問題ないですが、 小数ながらもアクセスが出来なくなる人がいるし、 対策として万全ではないことだけは理解しておいた方が良いかと思います。 セッションIDベースで IPアドレスに依存しないセッション管理としては、手軽な方法としては ・UserAgent をチェックする というのがあります。これ単体ではセッションハイジャックを完全に止めることはできませんが、 少なくとも普通の人なら、一連のアクセスでUserAgentが変わることはまずありませんので、普通の利用者がアクセスできなくなる可能性はありません。 あとは、認証のタイミングなどでは、セッションIDを再発行することで、ハイジャックしようにもセッションIDが無効になってしまうようにするのがいいでしょう。 (セッションハイジャックによる攻撃者が、被攻撃者にセッションIDを送り込んでそのセッションIDで認証をさせても、認証後にセッションIDが変われば、ハイジャッカーが持ってるセッションIDは無効になってそれ以上の攻撃はできなくなる)
その他の回答 (4)
>1つ目の質問は、~ あります たとえば、私はemobileを利用してネット接続していますが、 IPアドレスは6時間ごとに変化します よって、IPアドレスの変わり目でサイトを閲覧した場合に起こりえますし、 IPが変わるプロバイダは他にもいっぱいあるので発生確率もかなり高いといえます >2つ目の質問は、~ ない。0%
- php504
- ベストアンサー率42% (926/2160)
IPが変わる可能性があるといってもそんなに高いものではないでしょう。 セッション+IPで管理しても実用上問題はないと思います
- 774danger
- ベストアンサー率53% (1010/1877)
1つ目に関してはありうるでしょう 自分もよく電車の中とかでモバイル接続しますが、電波状態が悪くて回線が切れたときに再接続すれば普通にIPアドレスが変わっていますので 有線で接続している場合でも回線が切れない保証は何もないので0%と言い切るのは無理でしょう ブラウザの再起動でIPアドレスが変わることはないでしょうが、ブラウザでproxyの設定をしたら(変えたら)サーバから見たIPアドレスは変わる可能性がありますが、そういうのは考慮しなくていいんですか? ということで、 > 私の運営するサイトへのアクセスがあったクライアントの IP アドレスがブラウザを閉じるまでの間、同じIPアドレスかどうかが保証したいのです 完全に可能性が0%というのは無理でしょう
お礼
回答ありがとうございます。 なるほど・・確かにおっしゃる通り・・ ブラウザの開く閉じるの話と IP が変動するかどうかの話はそれぞれが独立した事象ですね。
- okg00
- ベストアンサー率39% (1322/3338)
http://www.imymode.com/lab/web07.htm 変動することは、もちろんありえます。ただし、現在のWindowsでの実装では「DHCPのクライアント更新は最初に今まで使っていたIPアドレスでリクエストを出す」ことから、同じIPアドレスを割り当てられることが多いです。ほとんど無いケースでも、考慮しなくてはならないでしょう。ブラウザの動作は関係なく、IPアドレスの変動はありえます。まあ、手動でももちろん変更できますけどね。 セッション管理をクッキーなりなんなりでしない事には、同じクライアントだという保証はまったくありえません。また、同じIPアドレスだからといって同じクライアントとは限りませんのでご注意を。 例えば、NAPTを使っているケースだとかセッションハイジャックだとか。IPアドレスだけで同じクライアントかどうかを判読するのは意味がありません。 http://www.atmarkit.co.jp/fsecurity/rensai/webhole03/webhole01.html
お礼
回答ありがとうございます。 参考サイト拝見させていただきました。 実は既に私のサイトはセッション管理によるユーザー認証をしています。 今回 IP アドレスの話が持ち上がったのはセッションハイジャックの話からなのです。 私のサイトのメンバーが悪意ある人にセッションIDを盗まれた時、現状無防備なため、セッションID が正規のものか、盗まれたものかを判断できないかと考えています。 今回私がやろうとしていたことは、ユーザーが認証を受け、セッションID を発行したら、その時にクライアントのIPアドレスも一緒に保存しておいて、セッションごとにIPも一致するかどうか判定して、もし一致しない場合は再ログインさせようかと考えていました。浅はかですね;; http://oshiete1.goo.ne.jp/qa5354478.html (こちらも私の質問です。) 何か良い手は無いものかでしょうか・・
お礼
回答ありがとうございます。 UserAgent について色々調べて見ました。 確かに UserAgent を使ってセッションハイジャック対策をしているサイトもあるようですね。 しかし色々調べるうちに IPアドレスにしても、UserAgent にしても、ある程度の抑制力はあるにしても完全ではないという結論に達しました。 ですから、完全ではないということを頭に置いてセッション管理の設計をもう一度考えてみたいと思います。