saverioriotto.it

Perché non dovresti copiare il codice di Spring Boot 3 generato dall'IA

Attenzione a copiare codice Spring Boot 3 dall'IA! Scopri le 3 vulnerabilità critiche che l'IA ignora spesso. Guida alla sicurezza con Java 21, Jakarta EE e Virtual Threads per sviluppatori senior.

Perché non dovresti copiare il codice di Spring Boot 3 generato dall'IA

L'intelligenza artificiale è diventata il "copilota" preferito di ogni sviluppatore. Chiedi a Gemini o ChatGPT di scriverti un controller per Spring Boot 3 e in tre secondi hai il codice pronto. Funziona? Spesso sì. È sicuro? Quasi mai.

Negli ultimi mesi, analizzando il codice generato dalle IA per progetti Java enterprise, ho notato un pattern preoccupante: l'IA tende a suggerire configurazioni obsolete, ignora i nuovi standard di Java 21 e, cosa più grave, introduce falle di sicurezza che un occhio inesperto potrebbe non notare.

In questo articolo vedremo perché il "Copia e Incolla" dall'IA può distruggere la sicurezza della tua applicazione e come blindare il tuo backend Spring Boot.

1. La trappola del codice "Legacy" in un mondo Spring Boot 3

L'IA è addestrata su miliardi di righe di codice, la maggior parte delle quali appartiene all'era di Spring Boot 2.x.

Il rischio: Chiedi una configurazione di sicurezza e l'IA ti propone di estendere WebSecurityConfigurerAdapter. La realtà: In Spring Boot 3, quella classe non esiste più.

Se forzi il codice o cerchi di adattarlo usando vecchie librerie, stai esponendo il tuo sistema a vulnerabilità note. Nel 2026, la sicurezza si basa su un approccio a componenti (Bean) e sul nuovo namespace Jakarta EE. L'IA spesso "allucina" mescolando javax.* e jakarta.*, creando un Frankenstein di dipendenze che compromette la stabilità del sistema.

2. Caso Studio: La vulnerabilità nel login generato dall'IA

Immaginiamo di chiedere all'IA un semplice servizio di autenticazione JWT. Ecco cosa accade spesso:

  1. Hardcoded Secrets: L'IA inserisce la chiave di firma del token direttamente nel codice o suggerisce di metterla nel file application.properties.

  2. Mancanza di Password Encoding: Molti snippet generati dimenticano di configurare un BCryptPasswordEncoder robusto, usando metodi di hashing deboli o superati.

  3. CSRF Disabilitato: Per far funzionare subito l'esempio, l'IA suggerisce spesso http.csrf().disable(). In produzione, senza le dovute contromisure (come i cookie SameSite o token specifici), questo è un invito a nozze per gli attaccanti.

La soluzione "Human-Checked":

Non limitarti al codice generato. Assicurati che il tuo SecurityFilterChain sia configurato così:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
        .csrf(csrf -> csrf.disable()) // Solo se usi JWT stateless!
        .authorizeHttpRequests(auth -> auth
            .requestMatchers("/api/v1/auth/**").permitAll()
            .anyRequest().authenticated()
        )
        .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
    
    return http.build();
}

Nota: Nota come la sintassi Lambda sia l'unico standard accettato in Spring Boot 3.x.

3. Performance e Java 21: Quello che l'IA non ti dice

Se usi Spring Boot 3 nel 2026, DEVI usare i Virtual Threads (Project Loom). L'IA raramente te lo suggerisce perché il suo "pensiero" è tarato sul vecchio modello "un thread per richiesta".

Senza questa riga nel tuo application.properties, la tua applicazione sprecherà risorse preziose: spring.threads.virtual.enabled=true

Perché è importante per la sicurezza? Un'app che gestisce meglio le risorse è più resiliente agli attacchi di tipo DoS (Denial of Service). L'IA si concentra sulla funzione, tu devi concentrarti sulla resilienza.

4. Checklist per uno sviluppo "AI-Assisted" ma sicuro

Se decidi di usare l'IA per scrivere codice Spring, segui queste regole d'oro:

  • Valida sempre gli Input: L'IA spesso dimentica @Valid o @NotNull. Non fidarti mai dei dati che arrivano dal client.

  • Usa i Record di Java 21: Invece delle classi classiche con Getter/Setter (spesso suggerite dall'IA), usa i record per i tuoi DTO. Sono immutabili e quindi intrinsecamente più sicuri.

  • Aggiorna le dipendenze: Controlla sempre che le versioni nel pom.xml siano le ultime stabili, non quelle suggerite dall'IA che potrebbero avere vulnerabilità critiche (CVE).

 

Conclusione

L'intelligenza artificiale è un acceleratore, non un sostituto del cervello. Nel 2026, la differenza tra un "coder" e un vero "Software Engineer" sta nella capacità di analizzare criticamente l'output di una macchina.

Il tuo blog e i tuoi progetti devono riflettere questa consapevolezza: usiamo l'IA per scrivere velocemente, ma usiamo la nostra esperienza per scrivere in sicurezza.




Commenti
* Obbligatorio