Bedste praksis for sikker JWT-implementering
Opbevar, rotér og tilbagekald JWT'er sikkert i produktionsapplikationer.
Bedste praksis for sikker JWT-implementering er en gratis Cryptology Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cryptology Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cryptology Academy-kurset indeholder 4 lektioner i alt.
Grundprincip
JWT'er er kun så sikre som deres implementering. Specifikationen er fleksibel; fleksibilitet skaber sårbarheder. Følg disse bedste praksisser for at undgå de almindelige faldgruber, som har ført til omgåelse af autentificering i produktionssystemer.
Fastlås algoritmen
Angiv altid den forventede algoritme eksplicit: jwt.decode(token, key, algorithms=["RS256"]). Læs aldrig algoritmen fra token-headeren for at vælge verifikationsnøgle eller kodevej. Det forhindrer alg=none- og nøgleforvekslingsangreb.
Kort udløbstid og fornyelsestokens
Adgangstokens: 15-60 minutter. Fornyelsestokens: 7-30 dage, gemt i httpOnly-cookies (ikke localStorage). Ved udløb bruger klienten fornyelsestokenet til at hente et nyt adgangstoken fra autentificeringsserveren uden ny autentificering.
Validering af målgruppe og udsteder
Valider aud (målgruppe) for at sikre, at tokenet blev udstedt til din tjeneste og ikke en anden. Valider iss (udsteder) mod URL'en til din autentificeringsserver. Uden disse kontroller ville et token fra en anden app, der er signeret med den samme nøgle, blive accepteret.
Tokenlagring
Adgangstokens i hukommelsen (JS-variabel) — ryddes ved lukning af fanen. Fornyelsestokens i httpOnly-, Secure- og SameSite=Strict-cookies — utilgængelige for JavaScript. Gem aldrig JWT'er i localStorage — XSS kan stjæle dem.
Tilbagekaldelsesstrategi
JWT'er er tilstandsløse — der er ingen indbygget tilbagekaldelse. Muligheder: vedligehold en tilbagekaldelsesliste (afvisningsliste), der kontrolleres ved hver anmodning; brug meget kort udløbstid; brug uigennemsigtige tokens med et centralt opslag i kontekster med høje sikkerhedskrav.
Nøglerotation
Roter signeringsnøgler regelmæssigt. Publicer flere nøgler i JWKS med forskellige kid-værdier. Under rotationen: udsted nye tokens med et nyt kid, hold den gamle nøgle aktiv, indtil gamle tokens udløber, og fjern derefter den gamle nøgle fra JWKS.
Følsomme data i payloaden
Læg aldrig følsomme data (adgangskoder, personnumre, kreditkort) i JWT-payloaden — den er base64url-kodet, ikke krypteret. Brug JWE (JSON Web Encryption), hvis du har brug for krypterede krav, eller opbevar følsomme data på serveren.
Kun HTTPS
Overfør kun JWT'er via HTTPS. Et JWT, der opsnappes over HTTP, giver fuld omgåelse af autentificeringen. Sæt Secure-flaget på cookies. Brug HSTS for at forhindre nedgradering af protokollen. Log aldrig komplette JWT-strenge i serverlogs.
Valg af bibliotek
Brug aktivt vedligeholdte biblioteker: PyJWT 2+, python-jose, auth0/node-jsonwebtoken 9+, Nimbus JOSE + JWT (Java). Undgå at implementere JWT-verifikation fra bunden. Kontrollér regelmæssigt CVE-databaser for sårbarheder i biblioteker.
Testning
Test alle angrebsvektorer: indsend et alg=none-token, et RS256→HS256-forvekslingstoken, et udløbet token, et token med forkert målgruppe og en ændret payload. Brug jwt.io til at oprette testtokens. Tilføj integrationstests, som fastslår, at disse afvises med 401.
Hurtigt tjek
Hvor bør fornyelsestokens gemmes i en webapplikation?
Opsummering
Sikker brug af JWT kræver fastlåste algoritmer, kort udløbstid for adgangstokens, lagring af fornyelsestokens i httpOnly-cookies, validering af målgruppe og udsteder samt nøglerotation. Næste emne: kryptografiske ordninger til deling af hemmeligheder.
Lær Cryptology Academy med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 67
- Lektioner
- 261
Ofte stillede spørgsmål
Er lektionen “Bedste praksis for sikker JWT-implementering” gratis?
Ja — hele teksten til “Bedste praksis for sikker JWT-implementering” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cryptology Academy-kurset, skal du opgradere til CoddyKit PRO. Cryptology Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Bedste praksis for sikker JWT-implementering”?
Opbevar, rotér og tilbagekald JWT'er sikkert i produktionsapplikationer. Du øver dig i Cryptology Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Cryptology Academy?
Der kræves ingen tidligere erfaring. Cryptology Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Bedste praksis for sikker JWT-implementering”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Cryptology Academy-lektion?
Ja. Alle Cryptology Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- JWT's opbygning: Header, Payload og Signature
- HS256 kontra RS256: Symmetriske og asymmetriske JWT'er
- JWT-sårbarheder: alg=none og nøgleforveksling
- Bedste praksis for sikker JWT-implementering