utrwalenie sesja jest atakiem, w którym jedna osoba mocuje identyfikator sesji innej osoby (SID).
Atak rozpoczyna się od atakującego odwiedzającego stronę internetową i ustanawiającego prawidłową sesję, gdy aplikacja dostarcza plik cookie zawierający identyfikator sesji, atakujący naprawił lub zablokował znaną dobrą sesję. Następnie osoba atakująca oszuka ofiarę za pomocą tego identyfikatora sesji. W tym momencie atakujący i ofiara mają ten sam identyfikator sesji. W każdej chwili informacje przechowywane w tej sesji utrwalonej są wykorzystywane do podejmowania decyzji dotyczących ofiary lub wyświetlania informacji, które ofiara powinna zobaczyć, może potencjalnie wykorzystać i wyświetlić ją atakującemu! Możesz read more here.
Jedynym obejściem tego problemu będzie ASP.NET do wydać NOWY identyfikator sesji po udanym uwierzytelnieniu, W ten sposób, gdy ofiara zaloguje się, osoba atakująca nie będzie miała dostępu do sesji. Kolejnym punktem do zapamiętania. NIGDY dostarczyć sesji aż użytkownik loguje się
Pamiętaj, że w ASP.NET Session.Abandon()
nie jest wystarczająca do tego zadania, to nie usuwa cookie identyfikator sesji z przeglądarki użytkownika, więc każda nowa wniosek do tej samej aplikacji, po zakończeniu sesji, użyje tego samego identyfikatora sesji i nowej instancji stanu sesji! As Microsoft states here. Trzeba porzucić sesję i wyraźny identyfikator sesji ciasteczko:
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
Jest to również dobra praktyka, aby zmienić nazwę pliku cookie uwierzytelniania Form, w pliku web.config
:
<authentication mode="Forms">
<forms name=".CookieName" loginUrl="LoginPage.aspx" />
</authentication>
Oto dobry artykuł na Session Attacks and ASP.NET i jak go rozwiązać.