Protecția CSRF în Spring Security 6 în Spring Boot

security Spring Boot 3.x / Spring Security 6 Q&A / Distribuie cod

Înțelegerea protecției Cross-Site Request Forgery: când se păstrează activă pentru formulare web și când se dezactivează pentru API-uri REST.

Sintaxă
http.csrf(csrf -> csrf.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()))

Protecția împotriva atacurilor CSRF (Cross-Site Request Forgery) este activată în mod implicit în Spring Security pentru a împiedica site-urile terțe să trimită comenzi neautorizate folosind cookie-urile de sesiune ale utilizatorului.

Regula de aur în configurare:

  • Pentru aplicații clasice cu randare server-side (Thymeleaf, JSP) sau aplicații SPA care stochează sesiunea în cookie-uri: protecția CSRF trebuie păstrată activă folosind un repository de tokenuri precum CookieCsrfTokenRepository.
  • Pentru API-uri pur RESTful și stateless (care folosesc autentificare prin antet Authorization: Bearer <JWT>): atacul CSRF nu este aplicabil, iar protecția poate fi dezactivată prin csrf.disable().
Exemplu: Configurare CSRF cu token trimis în cookie pentru aplicații SPA
package ro.dexblog.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;

@Configuration
public class CsrfSecurityConfig {

    @Bean
    public SecurityFilterChain configure(HttpSecurity http) throws Exception {
        http
            .csrf(csrf -> csrf
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
            );
        return http.build();
    }
}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Protecția CSRF în Spring Security 6

Ai o nelămurire despre utilizarea comenzii Protecția CSRF în Spring Security 6 sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.