Zapobieganie przejęciu sesji

Jak uniemożliwić wielu klientom korzystanie z tego samego identyfikatora sesji? Pytam o to, ponieważ chcę dodać dodatkową warstwę zabezpieczeń, aby zapobiec przejęciu sesji na mojej stronie. Jeśli haker w jakiś sposób rozpoznaje identyfikator sesji innego użytkownika i wysyła żądania z tym identyfikatorem SID, w jaki sposób mogę wykryć, że istnieją różni klienci udostępniający pojedynczy identyfikator SID na serwerze, a następnie odrzucają próbę przejęcia kontroli?

EDYTOWAĆ

Po dokładnym rozważeniu zaakceptowałem odpowiedź Gumbo, ponieważ doszedłem do wniosku, że to, o co proszę, jest niemożliwe z powodu ograniczeń abezstanowy protokół HTTP. Zapomniałem o tym, co jest chyba najbardziej podstawową zasadą HTTP, a teraz, gdy myślę o tym pytaniu, wydaje się to trochę trywialne.

Pozwólcie mi rozwinąć to, co mam na myśli:

Po zalogowaniu użytkownika A na example.com otrzymuje on losowy identyfikator sesji, dla uproszczenia niech będzie to „abc123”. Identyfikator sesji jest przechowywany jako plik cookie po stronie klienta i jest sprawdzany podczas sesji po stronie serwera, aby upewnić się, że użytkownik, który się zalogował, pozostaje zalogowany, gdy przenosi się z jednej strony na drugą. Ten plik cookie oczywiście nie musiałby istnieć, gdyby HTTP nie był bezstanowy. Z tego powodu, jeśli Użytkownik B ukradnie identyfikator SID Użytkownika A i utworzy plik cookie na swoim komputerze o wartości „abc123”, z powodzeniem przejąłby sesję Użytkownika A, ale serwer po prostu nie może w sposób zgodny z prawem rozpoznać tego użytkownika Żądanie różni się od żądań Użytkownika A, dlatego serwer nie ma powodu, aby odrzucać jakiekolwiek żądanie. Nawet gdybyśmy wymieniali sesje, które były już aktywne na serwerze i próbowali sprawdzić, czy ktoś uzyskuje dostęp do sesji, która jest już aktywna, jak możemy ustalić, że jest to inny użytkownik, który uzyskuje dostęp do sesji nielegalnie, a nie ten sam użytkownik kto jest już zalogowany przy użyciu identyfikatora sesji, ale po prostu próbuje wykonać z nim kolejne żądanie (np. przejść do innej strony internetowej). Nie możemy. Sprawdzasz agenta użytkownika? Może być sfałszowany - ale mimo to dobry jako środek Obrony w Głębi. Adres IP? Może się zmieniać z uzasadnionych powodów - ale zamiast sprawdzać adres IP w ogóle, sugeruję sprawdzenie czegoś takiego jak pierwsze dwa oktety adresu IP, jako nawet użytkownika w sieci transmisji danych, która stale zmienia adres IP z całkowicie uzasadnionych powodów zazwyczaj mają dwa ostatnie oktety zmiany IP.

Podsumowując, jest to bezpaństwowy HTTP, który skazuje nas na to, że nigdy nie będziemy w stanie w pełni chronić naszych stron internetowych przed przejęciem sesji, ale dobre praktyki (takie jak te, które dostarczyła Gumbo) będą wystarczająco dobre, aby zapobiec znacznej większości ataków sesyjnych. Próba ochrony sesji przed przejęciem przez odrzucenie wielu żądań tego samego identyfikatora SID jest więc po prostu niedorzeczna i pokonałaby cały cel sesji.

questionAnswers(8)

yourAnswerToTheQuestion