Cryptology Academy · leksjon

Beste praksis for sikker implementering av JWT

Lagre, roter og tilbakekall JWT-er trygt i produksjonsapplikasjoner.

Leksjon 4 av 413 trinn

Beste praksis for sikker implementering av JWT er en gratis leksjon i Cryptology Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cryptology Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cryptology Academy inneholder totalt 4 leksjoner.

Kjerneprinsipp

JWT-er er bare så sikre som implementasjonen. Spesifikasjonen er fleksibel, og fleksibilitet skaper sårbarheter. Følg disse anbefalte fremgangsmåtene for å unngå de vanlige fallgruvene som har ført til omgåelse av autentisering i produksjonssystemer.

Fastlås algoritmen

Angi alltid den forventede algoritmen eksplisitt: jwt.decode(token, key, algorithms=["RS256"]). Les aldri algoritmen fra tokenheaderen for å velge verifiseringsnøkkel eller kodebane. Dette hindrer alg=none- og nøkkelforvekslingsangrep.

Kort utløpstid + refresh-tokener

Access-tokener: 15–60 minutter. Refresh-tokener: 7–30 dager, lagret i httpOnly-cookies (ikke localStorage). Når et access-token utløper, bruker klienten refresh-tokenet til å hente et nytt access-token fra autentiseringsserveren uten ny autentisering.

Validering av audience og issuer

Valider aud (audience) for å sikre at tokenet ble utstedt for tjenesten Deres, og ikke for en annen. Valider iss (issuer) mot URL-en til autentiseringsserveren. Uten disse kontrollene ville et token fra en annen applikasjon, signert med samme nøkkel, blitt godtatt.

Tokenlagring

Access-tokener i minnet (JS-variabel) – slettes når fanen lukkes. Refresh-tokener i httpOnly-, Secure- og SameSite=Strict-cookies – utilgjengelige for JavaScript. Lagre aldri JWT-er i localStorage – XSS kan stjele dem.

Tilbakekallingsstrategi

JWT-er er tilstandsløse – de har ingen innebygd tilbakekalling. Alternativer: vedlikehold en tilbakekallingsliste (denylist) som kontrolleres ved hver forespørsel; bruk svært kort utløpstid; eller bruk ugjennomsiktige tokener med sentralt oppslag i kontekster med høye sikkerhetskrav.

Nøkkelrotasjon

Roter signeringsnøkler regelmessig. Publiser flere nøkler i JWKS med ulike kid-verdier. Under rotasjon: utsted nye tokener med ny kid, la den gamle nøkkelen være aktiv til gamle tokener har utløpt, og fjern deretter den gamle nøkkelen fra JWKS.

Sensitive data i nyttelasten

Legg aldri sensitive data (passord, personnumre, kredittkort) i JWT-nyttelasten – den er base64url-kodet, ikke kryptert. Bruk JWE (JSON Web Encryption) hvis De trenger krypterte claims, eller oppbevar sensitive data på serversiden.

Kun HTTPS

Overfør JWT-er bare over HTTPS. Et JWT som fanges opp over HTTP, gir full omgåelse av autentiseringen. Sett Secure-flagget på cookies. Bruk HSTS for å hindre protokollnedgradering. Logg aldri fullstendige JWT-strenger i serverlogger.

Valg av bibliotek

Bruk biblioteker som vedlikeholdes godt: PyJWT 2+, python-jose, auth0/node-jsonwebtoken 9+ og Nimbus JOSE + JWT (Java). Unngå å implementere JWT-verifisering fra grunnen av. Kontroller CVE-databaser regelmessig for sårbarheter i biblioteker.

Testing

Test alle angrepsvektorer: send inn et alg=none-token, et RS256→HS256-forvekslingstoken, et utløpt token, et token med feil audience og en manipulert nyttelast. Bruk jwt.io til å lage testtokener. Legg til integrasjonstester som kontrollerer at disse avvises med 401.

Kort kontroll

Hvor bør refresh-tokener lagres i en webapplikasjon?

Oppsummering

Sikker bruk av JWT krever fastlåste algoritmer, kort utløpstid for access-tokener, lagring av refresh-tokener i httpOnly-cookies, validering av audience og issuer samt nøkkelrotasjon. Neste: kryptografiske ordninger for hemmelighetsdeling.

Gratis å komme i gang

Lær deg Cryptology Academy med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
67
Leksjoner
261

Ofte stilte spørsmål

Er leksjonen «Beste praksis for sikker implementering av JWT» gratis?

Ja – hele teksten i «Beste praksis for sikker implementering av JWT» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cryptology Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cryptology Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Beste praksis for sikker implementering av JWT»?

Lagre, roter og tilbakekall JWT-er trygt i produksjonsapplikasjoner. Du øver på Cryptology Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Cryptology Academy?

Ingen tidligere erfaring er nødvendig. Cryptology Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Beste praksis for sikker implementering av JWT»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Cryptology Academy-leksjonen?

Ja. Alle Cryptology Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. JWTs oppbygning: header, payload og signatur
  2. HS256 kontra RS256: symmetriske og asymmetriske JWT-er
  3. JWT-sårbarheter: alg=none og nøkkelforvirring
  4. Beste praksis for sikker implementering av JWT
← Tilbake til Cryptology Academy