2013-07-18 10 views
5

Zamiast używać cookie używam tokena JWT, który jest wysyłany przy każdym żądaniu. Każde żądanie jest żądaniem POST, aby token nie został zapisany w historii przeglądarki.Używanie JWT zamiast Cookie na stronie z włączoną obsługą SSL

Jest to aplikacja z jedną stroną.

Token wygląda następująco:

{ 
    userId: 12345678, 
    expires: <UNIX timestamp>, 
    otherInfo: <something> 
} 

Wszystko jest zabezpieczone protokołem SSL. Token jest tworzony na serwerze po zalogowaniu się użytkownika.

Czy to byłby dobry sposób na zastąpienie pliku cookie lub czy widzisz jakieś błędy?

+0

Dlaczego historia przeglądarki byłaby problemem dla pojedynczej strony aplikacji, nawet dla żądań GET? Żądania AJAX nie pojawiają się w historii przeglądarki. Ale lepiej umieścić token w nagłówku "Authorization", aby nie pojawiał się przypadkowo w logach dostępu, jeśli użyjesz GET po wszystkim. –

Odpowiedz

1

Nie, to nie jest dobre rozwiązanie. Używanie plików cookie (z flagą httpOnly) dla trwałości żądania krzyżowego jest opcjonalne - jest to jedyny sposób bezpiecznego przechowywania poświadczeń sesji, w taki sposób, że kod JavaScript strony nie może uzyskać do niego bezpośredniego dostępu.

Jest to niezbędne, aby zapobiec np. kradzież sesji w ataku XSS, zapewniając, że skrypty nie będą miały dostępu do poświadczeń, ale nadal będą mogły być używane w żądaniach do serwera.

Używanie JWT również nie rozwiązuje problemu - dlaczego nie możesz po prostu użyć plików cookie sesji przy użyciu istniejącej implementacji sesji? Takie rzeczy są właśnie tym, do czego są stworzone.