Json Web Token - bezpieczeństwo aplikacji

0

Cześć,
Mam nadzieje, że wybrałem odpowiedni dział do dyskusji.
Stworzyłem bezstanową aplikację opartą o Spring-boot oraz AngularJS, w której uwierzytelnianie opiera się na Json Web Token. Transmisja jest oparta o HTTPS. Dopiero teraz zwróciłem jednak uwagę na bezpieczeństwo takiego rozwiązania - jeżeli ktoś wykradnie nam taki token, który jest przechowywany w localStorage, to może podszyć się pod innego użytkownika systemu.
Wpadłem na pomysł, aby podczas logowania, kiedy generowany jest token, zapisywać w bazie danych token oraz IP użytkownika, który się logował, które pobiorę na froncie. Wtedy, jeżeli ktoś wykradł nam taki token i wyśle zapytanie, musiałby także mieć takie samo IP. Czy jest to wystarczające zabezpieczenie? Czy może to da się bez problemu obejść i moje rozwiązanie jest bez sensu? Może ktoś ma inne propozycje?

3

A co z ludźmi o zmiennym IP? Tor? Proxy? VPN? Będą non stop wylogowywani?
Faktycznie local storage to średnie rozwiązanie, już lepsze byłoby secure cookie http only, bo jego przez banalnego xssa nie ukradniesz (chociaż nadal jeśli jest tam xss to ktoś moze wykonywać requesty w imieniu danego użytkownika, no ale jest to trochę mniej wygodne).

0

Przepraszam za błąd. Zadaję więc pytanie tutaj:
Czyli zabezpieczając aplikację przed XSS oraz wykorzystująć Secure Cookie Http Only (rozumiem, że to @CookieValue("key") String cookie ?), to pozbędę się problemu?

2

No jeśli aplikacja będzie wolna od jakiegokolwiek XSSa to ta opcja z local storage też byłaby bezpieczna ;) Niemniej należy dać sobie pewien margines zaufania i założyć że tak w 100% bezpieczni to nie będziemy i wtedy mimo wszystko trochę bezpieczniej będzie z tym httponly cookie, bo przynajmniej nie da sie go zwyczajnie ukraść i użyć u siebie.
Zobacz tutaj: https://github.com/p4-team/ctf/tree/master/2016-12-16-sharifctf7/web_300_cbpm jak można przez XSS ukraść sobie token z local storage.
Warto dodatkowo mieć ochronę przed CSRF, bo wtedy nawet z XSS przy httponly cookie będzie trudniej coś atakującemu wykonać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1