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"]; }
- Zaloguj się aby dodać komentarz.
Komentarze
sax
śr., 09/25/2019 - 12:54
Adres
https://stackoverflow.com
https://stackoverflow.com/questions/735350/how-to-get-a-users-client-ip-...
sax
śr., 09/25/2019 - 13:02
Adres
Nie używaj tego kodu ze
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ąć. -