2012-07-28 15 views
5

Moja witryna znajduje się pod atakiem brute force, w którym atakujący próbują uzyskać dostęp do kont użytkowników. Boty nie mają agenta użytkownika. Mam system, który blokuje możliwość logowania się przez osobę, która przekroczyła 3 próby na konto w czasie poniżej 10 minut.Czy sesje są przechowywane tylko w przeglądarce?

Sprawdziłem również dla klienta użytkownika, a jeśli nie, wyjdź.

Moje pytanie brzmi: Czy sesje są przechowywane tylko w przeglądarkach? Myślę, że używają skryptu uruchamianego za pośrednictwem wiersza poleceń.

I zostały wdrożone to także:

if(!isset($_COOKIE[ini_get('session.name')])) { 
header("HTTP/1.0 404 Not Found"); 
exit; 
} 

Czy coś jeszcze mogę zrobić, aby zapobiec takim atakom?

+2

Sesje to pamięć po stronie serwera, które są (zazwyczaj) połączone z użytkownikami za pomocą plików cookie. – nickb

+0

Google for: Session Hijack in php – Yang

Odpowiedz

14

Treść zmiennej sesji jest przechowywana na serwerze, jednak sesja jest identyfikowana przez identyfikator sesji, który jest przechowywany na kliencie i wysyłany przy każdym żądaniu. Zwykle identyfikator sesji jest przechowywany w pliku cookie, ale można go również dołączyć do adresu URL.

Istnieje dość interesująca lektura na session hijacking na Wiki, a także jedna na PHP Security Consortium, która powinna dać ci lepsze zrozumienie, co to jest porwanie i jak temu zapobiec.

Istnieje wiele metod, które pomogą zapobiec takim atakom, jakie wskazał trzy:

  • Wykorzystanie PHP session_regenerate_id() gdy użytkownik pomyślnie zaloguje ta tworzy nowy identyfikator sesji, odmienny od. taki, który został utworzony podczas pierwszej wizyty w strefie publicznej/bezpiecznej, o ile sesja rozpoczęła się oczywiście.
  • Zapisz adres IP użytkownika, identyfikator sesji i klienta użytkownika po pomyślnym zalogowaniu. Sprawdź adres IP i klienta użytkownika pod kątem każdego żądania, a jeśli adres IP i agent nie pasują do tej sesji, spraw, aby zalogowali się ponownie. Uważaj jednak, czasami IP użytkownika może się zmienić i może kogoś denerwować. Należy także pamiętać, że program użytkownika może łatwo zostać sfałszowany.
  • Użyj SSL/TCL, aby ukryć informacje wysłane w żądaniu.
Powiązane problemy