Spring Security 6 ja JWT-todennus · Oppitunti

Tokenien turvallinen tallennus

Ymmärrä JWT-tokenien ja refresh tokenien asiakaspuolen tallennuksen parhaat käytännöt yleisten hyökkäysten estämiseksi.

Oppitunti 3/411 vaihetta

Tokenien turvallinen tallennus on ilmainen Spring Security 6 ja JWT-todennus-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Spring Security 6 ja JWT-todennus-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Spring Security 6 ja JWT-todennus-kurssilla on yhteensä 4 oppituntia.

Miksi tunnisteiden turvallinen tallennus on tärkeää

Kun rakennatte suojattuja JWT-sovelluksia, tunnisteiden tallennuspaikka asiakaspuolella on ratkaisevan tärkeä. Virheellinen tallennus voi altistaa käyttäjät monille tietoturvariskeille.

Tässä oppitunnissa käsitellään JWT-tunnisteiden ja päivitystunnisteiden käsittelyn parhaita käytäntöjä selainympäristöissä sekä muissa asiakasympäristöissä, jotta sovelluksenne kestää paremmin yleisiä hyökkäyksiä.

Asiakaspuolen tallennusvaihtoehdot

Verkkoselaimet tarjoavat useita tapoja tietojen tallentamiseen, ja kullakin niistä on erilaiset vaikutukset arkaluonteisten tunnisteiden turvallisuuteen:

  • LocalStorage: Tallentaa tiedot pysyvästi selainistuntojen välillä.
  • SessionStorage: Tallentaa tiedot vain selainistunnon ajaksi.
  • Evästeet: Pieniä tietokokonaisuuksia, jotka palvelin lähettää selaimeen tallennettaviksi ja jotka selain lähettää takaisin myöhempien pyyntöjen yhteydessä.

Oikean vaihtoehdon valitseminen on tunnisteiden turvallisuuden kannalta olennaista.

LocalStorage- ja SessionStorage-tallennustilan riskit

Vaikka LocalStorage ja SessionStorage ovat käteviä, niitä ei yleensä suositella arkaluonteisten JWT-tunnisteiden tai päivitystunnisteiden tallentamiseen.

Ne ovat alttiita Cross-Site Scripting (XSS) -hyökkäyksille. Jos sivullenne lisätään haitallinen komentosarja, se voi helposti käyttää ja varastaa kaikki näihin tallennetut tunnisteet.

XSS: tunnistevaras

Cross-Site Scripting (XSS) on yleinen verkkoturvallisuuden haavoittuvuus. Sen avulla hyökkääjät voivat lisätä haitallisia asiakaspuolen komentosarjoja muiden käyttäjien katselemille verkkosivuille.

Nämä komentosarjat voivat:

  • Käyttää ja varastaa tietoja kohteista LocalStorage tai SessionStorage.
  • Suorittaa toimintoja käyttäjän puolesta.
  • Jopa kaapata käyttäjän istuntoja.

Siksi näihin tallennustiloihin tallennetut tunnisteet ovat suuressa vaarassa.

HTTP-Only-evästeiden esittely

HTTP-Only-evästeet ovat vahva valinta XSS-hyökkäyksiltä suojautumiseen, erityisesti päivitystunnisteiden yhteydessä. Asiakaspuolen JavaScript ei voi käyttää HTTP-Only-evästettä.

Tämä tarkoittaa, että vaikka XSS-hyökkäys tapahtuisi, haitallinen komentosarja ei voi lukea evästeen sisältöä tai varastaa sitä, mikä pienentää huomattavasti tunnisteen vaarantumisen riskiä.

Evästeiden tärkeät suojausliput

HTTP-Only-asetuksen lisäksi kaksi muuta lippua ovat evästeiden turvallisuuden kannalta olennaisia:

  • Secure: Varmistaa, että eväste lähetetään vain HTTPS-yhteyksien kautta. Älkää koskaan käyttäkö arkaluonteisia evästeitä tuotannossa ilman tätä lippua.
  • SameSite: Estää selainta lähettämästä evästettä sivustojen välisten pyyntöjen yhteydessä ja tarjoaa vahvan suojan Cross-Site Request Forgery (CSRF) -hyökkäyksiä vastaan.

Käyttäkää aina asetusta Secure ja tarkoitukseen sopivaa SameSite-käytäntöä (esimerkiksi Lax tai Strict).

Suojatun evästeen asettaminen Springissä

Näin Spring Boot -taustajärjestelmä voi asettaa HTTP-Only-, Secure- ja SameSite-evästeen. Tämä eväste sisältää yleensä päivitystunnisteen.

import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CookieController {

    @GetMapping("/set-secure-cookie")
    public String setSecureCookie(HttpServletResponse response) {
        Cookie refreshTokenCookie = new Cookie("refreshToken", "your_long_refresh_token");
        refreshTokenCookie.setHttpOnly(true); // JS cannot access
        refreshTokenCookie.setSecure(true);   // Only over HTTPS
        refreshTokenCookie.setMaxAge(7 * 24 * 60 * 60); // 7 days
        refreshTokenCookie.setPath("/");
        // Set SameSite to Lax or Strict for CSRF protection
        // Note: For Spring, SameSite often set via application properties
        // or a custom filter for older Servlet versions.
        // With modern Servlet API (e.g., Servlet 4+), can be set directly:
        // refreshTokenCookie.setAttribute("SameSite", "Lax");

        response.addCookie(refreshTokenCookie);
        return "Secure cookie set!";
    }

    public static void main(String[] args) {
        // This is a conceptual example for a Spring Controller.
        // A full Spring Boot app would run this via SpringApplication.run().
        // The main method here is just for completeness as per guidelines,
        // but this code needs a Spring context to fully execute.
        System.out.println("To run, integrate into a Spring Boot application.");
    }
}

Käyttötunnisteen tallennus: muistiin

Käyttötunnisteet ovat yleensä lyhytkestoisia. Asiakaspuolella käyttötunnisteen turvallisin tallennuspaikka on usein muisti (esimerkiksi JavaScript-muuttuja).

Tällöin tunnistetta ei kirjoiteta pysyvään tallennustilaan, vaan se katoaa, kun selainvälilehti suljetaan tai sivu päivitetään. Tämä vähentää altistumista, koska XSS-hyökkäyksessä tunniste voitaisiin varastaa vain käyttäjän ollessa aktiivisesti vaarannetulla sivulla.

Yhdistetty suojattu strategia

Vankassa strategiassa yhdistyvät molempien vaihtoehtojen parhaat puolet:

  • Käyttötunniste: Tallentakaa se JavaScript-muuttujaan (muistiin). Lähettäkää se API-pyyntöjen Authorization-otsakkeessa. Tunniste on lyhytkestoinen.
  • Päivitystunniste: Tallentakaa se evästeeseen, jossa ovat asetukset HTTP-Only, Secure ja SameSite. Tunnistetta käytetään uusien käyttötunnisteiden hankkimiseen nykyisen vanhennuttua. Se on pitkäkestoisempi ja hyvin suojattu.

Tämä lähestymistapa tasapainottaa helppokäyttöisyyden ja vahvan XSS- ja CSRF-suojan.

Testaa tietosi

Mitkä seuraavista ovat parhaita käytäntöjä JWT-tunnisteiden ja päivitystunnisteiden turvalliseen tallentamiseen asiakaspuolella?

Kertaus: turvallisen tallennuksen periaatteet

Olette oppineet keskeiset strategiat tunnisteiden turvalliseen tallentamiseen asiakaspuolella:

  • Välttäkää LocalStoragea ja SessionStoragea arkaluonteisten tunnisteiden tallentamiseen XSS-riskien vuoksi.
  • Käyttäkää päivitystunnisteisiin HTTP-Only-, Secure- ja SameSite-evästeitä suojautuaksenne XSS- ja CSRF-hyökkäyksiltä.
  • Säilyttäkää käyttötunnisteet muistissa (JavaScript-muuttujissa), koska ne ovat lyhytkestoisia.

Näitä käytäntöjä noudattamalla parannatte merkittävästi JWT-pohjaisen todennusjärjestelmänne turvallisuutta.

Aloita maksutta

Opi Java 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
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Tokenien turvallinen tallennus” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Spring Security 6 ja JWT-todennus-oppimispolun 3 oppituntia, myös oppitunnin “Tokenien turvallinen tallennus”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Spring Security 6 ja JWT-todennus-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Tokenien turvallinen tallennus”?

Ymmärrä JWT-tokenien ja refresh tokenien asiakaspuolen tallennuksen parhaat käytännöt yleisten hyökkäysten estämiseksi. Harjoittelet Spring Security 6 ja JWT-todennus-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Spring Security 6 ja JWT-todennus-opiskelun?

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

Kuinka kauan ”Tokenien turvallinen tallennus”-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ä Spring Security 6 ja JWT-todennus-oppitunnilla?

Kyllä. Jokainen Spring Security 6 ja JWT-todennus-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. Refresh Tokenien toteuttaminen
  2. JWT Tokenien mitätöintistrategiat
  3. Tokenien turvallinen tallennus
  4. Allekirjoitusavainten kierrättäminen ja avainten hallinta
← Takaisin: Spring Security 6 ja JWT-todennus