No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Deshabilitar protección CSRF

7/23
Recursos

Aportes 12

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

El método para deshabilitar el CSRF sin usar métodos deprecados, puede quedar así:

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    http
        .authorizeHttpRequests(customizeRequests -> {
                customizeRequests
                        .anyRequest()
                        .authenticated();
            }
        )
        .csrf(AbstractHttpConfigurer::disable)
        .httpBasic(Customizer.withDefaults());

    return http.build();
}

Muy importante lo que dice el Profe, en proyectos reales, me ha pasado que cuando se envía el código a revisión de vulnerabilidades, suelen responder con que es vulnerable a ataques CSRF.

Como bien indica el Profe, es necesario conocer tu aplicación, y especificar que esta deshabilidado, por que es tal vez una aplicación Staless + JWT .

Con esto puedes defender tu aplicación o explicar el por que esta deshabilitado.
En serio me ha tocado con clientes grandes que igual lo desconocen, y quieren habilitar CSRF en back y front para una aplicación Staless + JWT .

Ya que explicas con detenimiento y documentación ya lo comprenden.

De igual manera, tambien se pueden bloquear a los sitios no autorizados. Esto quiere decir que si intentan realizar una petición desde otro dominio automaticamente será rechazada

para que funcione todo bien cambiar la version a <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.6</version>
<relativePath/> en caso de usar maven

Si llega a aparecer varios métodos deprecados podrían intentar de la siguiente forma: ```java @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http .authorizeHttpRequests( customizeRequests -> { customizeRequests.anyRequest().authenticated(); } ) .csrf((csrf) -> csrf.disable()) .cors((cors) -> {}) .httpBasic((httpBasic) -> {}); return http.build(); } ```
Em mi caso la protección CSRF viene deshabilitada por defecto, si por motivos de testing desean habilitarla, lo pueden hacer de la siguiente manera: ```java package com.platzi.pizzeria.web.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .csrf(Customizer.withDefaults()) .authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated()) .httpBasic(Customizer.withDefaults()); return http.build(); } } ```
```js //indica que la clase puede contener métodos de bean. Un método de bean es un método que Spring ejecuta para registrar // un objeto en su contenedor de inversión de control (IoC @Configuration //Agrega varias características de seguridad, como la protección CSRF, la autenticación y la autorización. @EnableWebSecurity public class SecurityConfig { // indica que el método que sigue debe ser ejecutado por Spring para registrar un bean en su contenedor IoC @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http //desactivando la protección CSRF (Cross-Site Request Forgery) // es una característica de seguridad que ayuda a prevenir ciertos tipos de ataques, pero en algunos casos, puedes querer desactivarla // .csrf(AbstractHttpConfigurer::disable) //indicando que todas las solicitudes HTTP deben estar autenticadas .authorizeHttpRequests(auth -> auth.anyRequest().authenticated()) //habilitando la autenticación básica HTTP .httpBasic(Customizer.withDefaults()); // construyendo la configuración de seguridad y devolviéndola return http.build(); } } ```
//indica que la clase puede contener métodos de bean. Un método de bean es un método que Spring ejecuta para registrar // un objeto en su contenedor de inversión de control (IoC @Configuration //Agrega varias características de seguridad, como la protección CSRF, la autenticación y la autorización. @EnableWebSecurity public class SecurityConfig { // indica que el método que sigue debe ser ejecutado por Spring para registrar un bean en su contenedor IoC @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http //desactivando la protección CSRF (Cross-Site Request Forgery) // es una característica de seguridad que ayuda a prevenir ciertos tipos de ataques, pero en algunos casos, puedes querer desactivarla // .csrf(AbstractHttpConfigurer::disable) //indicando que todas las solicitudes HTTP deben estar autenticadas .authorizeHttpRequests(auth -> auth.anyRequest().authenticated()) //habilitando la autenticación básica HTTP .httpBasic(Customizer.*withDefaults*()); // construyendo la configuración de seguridad y devolviéndola return http.build(); } }
Si llegan a aparecer varios métodos deprecados podrían intentar así: ```java @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http .authorizeHttpRequests( customizeRequests -> { customizeRequests.anyRequest().authenticated(); } ) .csrf((csrf) -> csrf.disable()) .cors((cors) -> {}) .httpBasic((httpBasic) -> {}); return http.build(); } ```
estoy usando spring 3.2.5 y la version de spring security es 6.2.4 para que me funcionara hice lo siguiente `http.authorizeHttpRequests(authorize -> authorize .anyRequest().authenticated()).csrf((csrf) -> csrf.ignoringRequestMatchers("/api/*")).httpBasic(``withDefaults``());`
Miedo desbloqueado 😅

CSRF es un ataque que aprovecha una vulnerabilidad y hace una petición web haciendo ser pasar por un usuario