Asp.net IP client

Często będziesz chciał znać adres IP osoby odwiedzającej twoją stronę. Podczas gdy ASP.NET ma kilka sposobów na zrobienie tego, jednym z najlepszych sposobów, jakie widzieliśmy, jest użycie „HTTP_X_FORWARDED_FOR” z kolekcji ServerVariables.

Dlatego...

Czasami twoi goście stoją za serwerem proxy lub routerem, a standardowy Request.UserHostAddress przechwytuje tylko adres IP serwera proxy lub routera. W takim przypadku adres IP użytkownika jest następnie zapisywany w zmiennej serwera („HTTP_X_FORWARDED_FOR”).

Dlatego chcemy najpierw sprawdzić „HTTP_X_FORWARDED_FOR”, a jeśli jest pusty, po prostu zwracamy zmienne serwera („REMOTE_ADDR”).

Chociaż ta metoda nie jest niezawodna, może prowadzić do lepszych wyników. Poniżej znajduje się kod ASP.NET w VB.NET, zaczerpnięty z bloga Jamesa Crowleya „Gotcha: HTTP_X_FORWARDED_FOR zwraca wiele adresów IP”

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];
        }
    }
 
    return context.Request.ServerVariables["REMOTE_ADDR"];
}
Kategoria: 

Komentarze

Obrazek użytkownika sax

Nie używaj tego kodu ze względów bezpieczeństwa, ponieważ każdy może sfałszować HTTP_X_FORWARDED_FOR lub podobne nagłówki. Jeśli więc użyjesz tego do rejestrowania lub kontroli bezpieczeństwa, osoba atakująca może to łatwo ominąć. -