Czym jest sesja i do czego służy? Sesja to odmiana ciasteczka charakteryzująca się tym, że wszystkie dane sesji trzymane są po stronie serwera. Wydaje się być to najbezpieczniejszym rozwiązaniem ponieważ użytkownik posiada jedynie ID sesji i nie ma bezpośredniej możliwości manipulowania danymi zawartymi w sesji. Super mamy coś czego nikt nam nie zmieni!
Z w.w. powodu sesja to bardzo dobry sposób na trzymanie stanu zalogowania użytkownika oraz podstawowych danych sesji. Jednak jest tego zasadniczy minus. Co jak ktoś przechwyci sesję?
HTTP jest protokołem bezstanowym, dlatego każdy kto posłuży się ID sesji ma do niej dostęp. Załóżmy, że Janek zalogował się do serwisu i otrzymał identyfikator sesji ab12c. Następnie sytuację gdzie Krzysiek logując się do serwera lub też niekoniecznie po przez logowanie - celowo/niecelowo - otrzymuje ID sesji taki sam jak Janek. W tym momencie jeśli Krzysiek celowo przejął ID sesji Janka, dla serwisu jest Jankiem.
Przykry scenariusz, jednak jesteśmy na niego narażeni, jeśli nikt nie zabezpieczył się przez przechwyceniem sesji. Ale jak się zabezpieczyć? - zapytacie. Otóż istnieje bardzo prosta technika:
- przy tworzeniu sesji zapisujemy w sesji IP usera który powołał sesję do życia
- przy następnych zapytaniach porównujemy IP zapytania z IP w sesji
- jeśli IP się nie zgodzi niszczymy sesję
Jak się ustrzec przed tymi, jaki i kolejnymi potencjalnymi atakami napiszę w części 2 (w bliżej nie określonym terminie).