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の両方で実装する方法を示しています:
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(); //Added Trim to remove whitespace } } return context.Request.ServerVariables["REMOTE_ADDR"]; }
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アドレス文字列から先頭または末尾の空白を削除するためにHTTP_X_FORWARDED_FOR
関数が追加されています。 この方法により、真のクライアントIPアドレスを取得し、アプリケーションのセキュリティと機能を強化する精度が大幅に向上します。
以上がASP.NETで真のクライアントIPアドレスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。