Jak zwiększyć bezpieczeństwo tokenów JWT JSON Web Token?

JSON Web Token

Tokeny JWT ostatnimi czasy stały się bardzo popularną metodą uwierzytelniania w aplikacjach webowych. Choć jest to jeden z najbezpieczniejszych sposobów chronienia zasobów, a alternatyw na rynku brak – należy pamiętać, że każda róża ma kolce i także tutaj czyha wiele potencjalnych zagrożeń. Wynikają one głównie z błędów popełnianych przy implementacji. Aby się przed nimi ustrzec, warto trzymać się poniższych zasad:

  1. Upewnij się, że używasz odpowiednio złożonych kluczy szyfrujących o długości co najmniej 2048 bitów.
  2. Stwórz procedurę na wypadek wycieku klucza szyfrującego.
  3. Klucze powinny być przechowywane w odpowiednio bezpieczny sposób (np. nie powinny znajdować się w kodzie źródłowym).
  4. Przez serwer powinien być wymagany konkretny sposób podpisu – tak by nie była możliwa jego zmiana po stronie klienckiej.
  5. Zweryfikuj czy Twoja implementacja nie dopuszcza algorytmu podpisu „none”.
  6. Zweryfikuj czy Twoja implementacja na pewno sprawdza podpis (nie akceptuje pustego podpisu i rozróżniasz funkcje „verify()” i „decode()” ).
  7. Zweryfikuj czy tryb „debug” jest wyłączony i nie da się go wymusić po stronie klienckiej.
  8. Nie przesyłaj tokenów JWT w URL-u.
  9. Zweryfikuj czy w tokenie JWT nie ujawniasz poufnych informacji.
  10. Sprawdź, czy chronisz się przed atakiem typu „replay”.
  11. Zweryfikuj czy żywotność tokena jest odpowiednio krótka i czy rzeczywiście jest to poprawnie sprawdzane.
  12. Przemyśl czy nie potrzebujesz funkcji unieważniania pojedynczych tokenów.

Chcesz wiedzieć więcej?

Zapisz się i bądź informowany o nowych postach (zero spamu!). Dodatkowo otrzymasz, moją prywatną listę 15 najbardziej przydatnych narzędzi (wraz z krótkim opisem), których używam przy testach penetracyjnych.

Nigdy nie podam, nie wymienię ani nie sprzedam Twojego adresu e-mail. W każdej chwili możesz zrezygnować z subskrypcji.

Otagowano , , , , , , , , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *