![How to Get the True Client IP Address in ASP.NET?](https://img.php.cn/upload/article/000/000/000/173820217331145.jpg)
ASP.NETアプリケーションでの正確なクライアントIPアドレス取得
ユーザーの実際のIPアドレスを決定することは、ユーザーの識別やトラフィック管理など、多くのASP.NETアプリケーションにとって不可欠です。 Request.UserHostAddress
はIPアドレスを提供しますが、多くの場合、エンドユーザーのデバイスではなく、プロキシサーバーまたはロードバランサーを表します。
http_x_forwarded_for をレバレッジ化します
ソリューションは、
サーバー変数を使用することにあります。この変数は、トラバースプロキシサーバーまたはネットワークデバイスを要求するときに、元のクライアントIPアドレスを保存します。 優先順位付けHTTP_X_FORWARDED_FOR
は、正確なIPアドレスの取得を保証します
HTTP_X_FORWARDED_FOR
c#およびvb.netコードの例
次のコードスニペットは、このソリューションをC#とvb.netの両方で実装する方法を示しています:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | protected string GetIPAddress()
{
System.Web.HttpContext context = System.Web.HttpContext.Current;
string ipAddress = context.Request.ServerVariables[ "HTTP_X_FORWARDED_FOR" ];
if (!string.IsNullOrEmpty(ipAddress))
{
string[] addresses = ipAddress.Split( ',' );
if (addresses.Length > 0)
{
return addresses[0].Trim();
}
}
return context.Request.ServerVariables[ "REMOTE_ADDR" ];
}
|
ログイン後にコピー
これらの関数は、最初に
1 2 3 4 5 6 7 8 9 10 11 12 13 | Public Shared Function GetIPAddress() As String
Dim context As System.Web.HttpContext = System.Web.HttpContext.Current
Dim ipAddress As String = context.Request.ServerVariables( "HTTP_X_FORWARDED_FOR" )
If Not String.IsNullOrEmpty(ipAddress) Then
Dim addresses As String() = ipAddress.Split( "," c)
If addresses.Length > 0 Then
Return addresses(0).Trim() 'Added Trim to remove whitespace
End If
End If
Return context.Request.ServerVariables( "REMOTE_ADDR" )
End Function
|
ログイン後にコピー
をチェックします。存在する場合、コンマ区切りリストから最初のIPアドレスを抽出します。 見つからない場合は、
に戻ります。 信頼性を向上させるために、IPアドレス文字列から先頭または末尾の空白を削除するためにHTTP_X_FORWARDED_FOR
関数が追加されています。 この方法により、真のクライアントIPアドレスを取得し、アプリケーションのセキュリティと機能を強化する精度が大幅に向上します。
以上がASP.NETで真のクライアントIPアドレスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。