2010-05-23 13 views

Odpowiedz

4

można uzyskać adres IP klienta z wykorzystaniem HttpRequest.UserHostAddress property (wystąpienie można uzyskać dostęp za pomocą this.Request z dowolnej strony lub za pomocą właściwości statycznych HttpContext.Current).

O ile mi wiadomo, nie ma standardowej metody porównywania adresu IP z określonym zakresem, więc trzeba samemu zaimplementować ten fragment.

prawdopodobnie będziesz chciał sprawdzić to na każde żądanie, które mogą być wykonane zarówno w metodzie każdej strony OnInit (które chcesz zablokować) lub w BeginRequest event zgłoszenia (zazwyczaj w Global.asax).

Jeśli wykryć zablokowanego adresu, można wyprowadzać pusta (zastępczy) Strona używając Server.Transfer method (Response.End byłaby inna alternatywa, ale to po prostu odcina stronę - powracającego pustą stronę, a Server.Transfer pozwala na wyjście niektóre wiadomości do Klient).

+0

wiem, jak je zdobyć, ale nie kn jak je zablokować. Nie jestem bardzo obeznany z asp.net – FinalDestiny

+1

Należy to również zrobić na HttpModule, ponieważ nie chcesz zużywać zasobów serwera WWW, przetwarzając niepotrzebnie żądanie, jeśli adres IP jest zablokowany. – Anero

+0

@FinalDestiny: Dodano resztę odpowiedzi :-) –

4

Jeśli masz na myśli "blok" to "nie pozwól im nękać mojego serwera", to nie jest problem z asp.net, potrzebujesz zapory ogniowej (oprogramowania lub sprzętu).

Jeśli to, co masz na myśli przez „blok” jest „nie wykazują moich stron”:

' pseudocode, I haven't checked the exact syntax 

Sub Page_Load() 
    If HttpRequest.UserHostAddress = "123.123.123.1" then 
     Response.Redirect "404.htm" ' send them elsewhere 
    end if 
End Sub 
+0

+1 za sugestię obsługi tego rodzaju rzeczy na poziomie zapory ogniowej zamiast na poziomie oprogramowania, jeśli to możliwe. –