Mam obecnie własną usługę ochrony aplikacji, która działa w moim przedsiębiorstwie i jest - w większości przypadków - zgodna z potrzebami biznesowymi.Utrwalanie sesji SSL i bezpieczne pliki cookie
Problem, który obecnie napotykam, polega na tym, że usługa tradycyjnie (naiwnie) polegała na źródłowym IP użytkownika, który pozostaje stały jako zabezpieczenie przed przechwytywaniem sesji - aplikacje internetowe w przedsiębiorstwie nie są bezpośrednio dostępne dla publiczności i w przeszłości całkowicie akceptowalne było dla mnie wymaganie, aby adres użytkownika pozostawał stały przez cały czas trwania sesji.
Niestety tak już nie jest i dlatego jestem zmuszony przełączyć się na rozwiązanie, które nie opiera się na źródłowym IP. Zdecydowanie wolałbym wdrożyć rozwiązanie, które faktycznie spełni pierwotną intencję projektanta (tj. Zapobiegnie przejmowaniu sesji).
Moje dotychczasowe badania okazały się być this, co zasadniczo mówi "salt your hash tokenu uwierzytelniania z kluczem sesyjnym SSL."
Na pierwszy rzut oka wydaje się to idealnym rozwiązaniem, ale pozostaje mi dręczące podejrzenie, że wdrożenie tego systemu w realnym świecie jest niepraktyczne ze względu na możliwość, że klient i serwer może w każdej chwili - skutecznie arbitralnie - zdecyduj się na ponowną negocjację sesji SSL, a zatem zmień klucz.
to jest scenariusz Ja przewidując: Sesja
- SSL ustalone i uzgodnione klucz.
- Klient uwierzytelnia się na serwerze na poziomie aplikacji (np. Za pośrednictwem nazwy użytkownika i hasła).
- Serwer zapisuje bezpieczny plik cookie, który zawiera klucz sesji SSL.
- Wystąpił element o numerze powodujący ponowną negocjację sesji. Na przykład, myślę, że IE robi to na zegarze z lub bez powodu.
- Klient przesyła żądanie na serwer zawierający klucz sesyjny stary (ponieważ nie było wiedzy na poziomie aplikacji o renegocjacji, nie było możliwości, aby nowy, zaktualizowany skrót został zapisany do klienta).
- Serwer odrzuca uwierzytelnienie klienta z powodu mieszania niepowodzenie dopasowania itd
Czy to jest prawdziwy problem lub jest to nieporozumienie z mojej strony ze względu na a (co najmniej) mniej niż doskonałego zrozumienia jak działa SSL?
Ale to rozwiązanie pamięci podręcznej nie rozwiąże problemu, że klient nagle używa nowego klucza sesji SSL, że aplikacja nie wiedzieć. Klient musiałby powiedzieć "teraz używam nowego klucza sesji SSL" lub serwer musi poinformować aplikację o kluczowej zmianie. – Gumbo
Nie, klient wysłałby plik cookie na podstawie starego klucza sesji (renegocjowanie sesji nie wyczyści pliku cookie). Sól jest tam tylko po to, żeby trudno było odgadnąć, to może być cokolwiek. Klucz sesji SSL jest po prostu poręczny, o odpowiednim rozmiarze i odpowiednio entropijny. – MarkusQ
@MarkusQ, nie jestem pewien, jak to rozwiązuje problem, jeśli faktycznie skopiowałem plik cookie z komputera A na maszynę B, a następnie maskaradowałem jako komputer A (w nowej sesji SSL). – vladr