Cryptology Academy · Oppitunti

JWT:n turvallisen toteutuksen parhaat käytännöt

Tallentakaa, vaihtakaa ja kumotkaa JWT:t turvallisesti tuotantosovelluksissa.

Oppitunti 4/413 vaihetta

JWT:n turvallisen toteutuksen parhaat käytännöt on ilmainen Cryptology Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cryptology Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cryptology Academy-kurssilla on yhteensä 4 oppituntia.

Perusperiaate

JWT:t ovat vain niin turvallisia kuin niiden toteutus. Määritys on joustava, ja joustavuus synnyttää haavoittuvuuksia. Noudattakaa näitä parhaita käytäntöjä välttääksenne yleiset ongelmat, jotka ovat johtaneet todennuksen ohituksiin tuotantojärjestelmissä.

Algoritmin lukitseminen

Määrittäkää odotettu algoritmi aina eksplisiittisesti: jwt.decode(token, key, algorithms=["RS256"]). Älkää koskaan lukeko algoritmia tokenin otsakkeesta valitaksenne tarkistusavaimen tai koodipolun. Tämä estää alg=none- ja avainsekaannushyökkäykset.

Lyhyt voimassaoloaika + refresh-tokenit

Access tokenit: 15–60 minuuttia. Refresh tokenit: 7–30 päivää, tallennettuna httpOnly-evästeisiin (ei localStorageen). Vanhentuessaan asiakas käyttää refresh-tokenia saadakseen auth-palvelimelta uuden access tokenin ilman uudelleentodennusta.

Audiencen ja issuerin validointi

Validoikaa aud (audience) varmistaaksenne, että token on myönnetty palveluanne eikä jotain toista varten. Validoikaa iss (issuer) auth-palvelimen URL-osoitetta vasten. Ilman näitä tarkistuksia toinen sovellus voisi käyttää tokenia, joka on allekirjoitettu samalla avaimella, ja se hyväksyttäisiin.

Tokenien tallennus

Access tokenit muistissa (JS-muuttujassa) — tyhjennetään välilehden sulkeutuessa. Refresh tokenit httpOnly-, Secure- ja SameSite=Strict-evästeissä — JavaScript ei pääse niihin käsiksi. Älkää koskaan tallentako JWT:itä localStorageen — XSS voi varastaa ne.

Peruutusstrategia

JWT:t ovat tilattomia — sisäänrakennettua peruutusta ei ole. Vaihtoehdot: ylläpitäkää peruutusluetteloa (estoluetteloa), joka tarkistetaan jokaisella pyynnöllä; käyttäkää hyvin lyhyttä voimassaoloaikaa; käyttäkää opaakkeja tokeneita ja keskitettyä hakua korkean turvallisuuden tilanteissa.

Avainten kierto

Kiertäkää allekirjoitusavaimia säännöllisesti. Julkaiskaa JWKS:ssä useita avaimia, joilla on eri kid-arvot. Kiertoajankohtana myöntäkää uudet tokenit uudella kid-arvolla, pitäkää vanha avain aktiivisena vanhojen tokenien vanhenemiseen asti ja poistakaa se sitten JWKS:stä.

Arkaluonteiset tiedot payloadissa

Älkää koskaan sijoittako arkaluonteisia tietoja (salasanoja, henkilötunnuksia, luottokortteja) JWT-payloadiin — se on base64url-koodattu, ei salattu. Käyttäkää JWE:tä (JSON Web Encryption), jos tarvitsette salattuja claimeja, tai säilyttäkää arkaluonteiset tiedot palvelimella.

Vain HTTPS

Siirtäkää JWT:t vain HTTPS:n kautta. HTTP:n yli siepattu JWT mahdollistaa täydellisen todennuksen ohituksen. Asettakaa evästeiden Secure-lippu päälle. Käyttäkää HSTS:ää protokollan alasvaihdon estämiseen. Älkää koskaan kirjatko kokonaisia JWT-merkkijonoja palvelimen lokeihin.

Kirjaston valinta

Käyttäkää hyvin ylläpidettyjä kirjastoja: PyJWT 2+, python-jose, auth0/node-jsonwebtoken 9+, Nimbus JOSE + JWT (Java). Välttäkää JWT-tarkistuksen toteuttamista alusta asti. Tarkistakaa CVE-tietokannat säännöllisesti kirjastojen haavoittuvuuksien varalta.

Testaus

Testatkaa kaikki hyökkäysvektorit: lähettäkää alg=none-token, RS256→HS256-sekaannustoken, vanhentunut token, väärän audiencen token ja muokattu payload. Käyttäkää jwt.io:ta testitokenien luomiseen. Lisätkää integraatiotestit, jotka varmistavat näiden hylkäämisen tilakoodilla 401.

Pikatarkistus

Mihin refresh-tokenit pitäisi tallentaa verkkosovelluksessa?

Yhteenveto

Turvallinen JWT:n käyttö edellyttää lukittuja algoritmeja, access tokenien lyhyttä voimassaoloaikaa, refresh-tokenien tallentamista httpOnly-evästeisiin, audiencen ja issuerin validointia sekä avainten kiertoa. Seuraavaksi: kryptografiset salaisuudenjakamismenetelmät.

Aloita maksutta

Opi Cryptology Academy tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
67
Oppitunnit
261

Usein kysytyt kysymykset

Onko oppitunti ”JWT:n turvallisen toteutuksen parhaat käytännöt” ilmainen?

Kyllä – oppitunnin ”JWT:n turvallisen toteutuksen parhaat käytännöt” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cryptology Academy-kurssin, päivitä CoddyKit PROhon. Cryptology Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”JWT:n turvallisen toteutuksen parhaat käytännöt”?

Tallentakaa, vaihtakaa ja kumotkaa JWT:t turvallisesti tuotantosovelluksissa. Harjoittelet Cryptology Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cryptology Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cryptology Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”JWT:n turvallisen toteutuksen parhaat käytännöt”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Cryptology Academy-oppitunnilla?

Kyllä. Jokainen Cryptology Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. JWT:n rakenne: otsake, hyötykuorma ja allekirjoitus
  2. HS256 ja RS256: symmetriset ja epäsymmetriset JWT:t
  3. JWT-haavoittuvuudet: alg=none ja avainten sekoittuminen
  4. JWT:n turvallisen toteutuksen parhaat käytännöt
← Takaisin: Cryptology Academy