1. ホーム
  2. c#

[解決済み] ASP.NETでユーザーのクライアントIPアドレスを取得する方法は?

2022-03-25 19:07:28

質問

私たちは Request.UserHostAddress でIPアドレスを取得することができますが、これは通常、ユーザーのISPのIPアドレスであり、例えばリンクをクリックしたユーザーのマシンのIPアドレスとは正確ではありません。どうすれば、本当のIPアドレスを取得できますか?

例えば、Stack Overflowのユーザープロファイルでは、次のようになっています。 "最後のアカウント活動:4時間前、86.123.127.8"から。 しかし、私のマシンのIPアドレスは少し違っています。Stack Overflowはこのアドレスをどのように取得しているのでしょうか?

いくつかのウェブシステムでは、ある目的のためにIPアドレスのチェックがあります。例えば、あるIPアドレスで、24時間ごとに、ユーザーはダウンロードリンクを5回だけクリックすることができるのでしょうか?このIPアドレスは、膨大な範囲のクライアントやインターネットユーザーを抱えるISPのためではなく、ユニークであるべきです。

よく理解できましたか?

解決方法は?

他の方もおっしゃっているように、ご質問のようなことはできません。もし、あなたが解決しようとしている問題を記述すれば、もしかしたら誰かが助けてくれるかもしれません。

  • は、ユーザーを一意に識別しようとしていますか?
  • IPアドレスの代わりに、クッキーやセッションIDを使用することは可能でしょうか?

編集 サーバーに表示されるアドレスはISPのアドレスではないはずです。おっしゃるとおり、それは大きな範囲になるでしょう。ブロードバンドのホームユーザーのアドレスは、ルーターのアドレスになります。したがって、家の中のすべてのデバイスは、外からは同じに見えますが、ルーターはNATを使って、各デバイスにトラフィックが正しく送られるようにします。オフィス環境からアクセスするユーザーの場合、アドレスはすべてのユーザーに対して同じになる可能性があります。IDにIPアドレスを使用するサイトは、非常に大きな間違いを犯す危険性があります。あなたが挙げた例は良い例ですが、しばしば失敗します。例えば、私のオフィスは英国にありますが、ブレイクアウト・ポイント(インターネット上にいるように見える場所)は、私たちの主要なIT施設がある別の国にあります。このため、BBC iPlayerのような英国内のみのウェブコンテンツにアクセスすることができません。) 私の会社には、同じIPアドレスからウェブにアクセスしているように見える人が、常時、数百人、数千人いるはずです。

サーバーコードを書いているとき、表示されたIPアドレスが何を指しているのか、決して確認することはできないのです。このような状態を好むユーザーもいます。また、プロキシやVPNをわざと使って、さらに混乱させる人もいます。

StackOverflowに表示されているIPアドレスと自分のマシンアドレスが違うという場合、どうやって自分のマシンアドレスを調べているのでしょうか?もし、ローカルで ipconfig などは、上記の理由で異なることが予想されます。もし、外部がどう考えているかを再確認したいのであれば、以下のサイトを参照してください。 Whatismyipaddress.com/ .

この NATに関するウィキペディアのリンク は、その背景を知ることができます。