Spedire in fretta va bene, ma c'è una breve lista che vale la pena rivedere prima di aprire la tua app al mondo. Niente di tutto questo richiede di essere un esperto di sicurezza, e tutto è verificabile dall'esterno in un paio di minuti. Ecco cosa conta davvero, perché ogni punto fa male e come risolverlo.
Come gli attaccanti li trovano in pochi minuti
La maggior parte delle violazioni delle app costruite con l'IA non sono attacchi sofisticati. Qualcuno apre il tuo sito, preme F12, legge il JavaScript che la tua app ha già inviato al suo browser e copia un URL che la tua app già chiama. Gli scanner automatici fanno lo stesso su larga scala, colpendo percorsi comuni come /.env o /.git su migliaia di siti al giorno. Tutto quello che segue è qualcosa che possono controllare senza alcun accesso al tuo codice, ed è esattamente per questo che dovresti controllarlo per primo.
1. Nessun segreto nel frontend
Le chiavi API e i token devono stare solo sul server. Quando un assistente IA "collega" un servizio, spesso inserisce la chiave direttamente nel codice client, dove chiunque può leggerla nei DevTools. Una chiave Stripe sk_live_ trapelata può muovere soldi veri; una chiave service_role di Supabase consegna l'intero database. Tieni le chiavi segrete nelle variabili d'ambiente del server ed esponi solo le chiavi pubbliche pensate per il browser. Guarda i segreti che la tua app rivela nel browser.
2. HTTPS e header di sicurezza
Servi tutto tramite HTTPS e reindirizza l'HTTP verso di esso, così nessuno può leggere o manomettere il traffico. Poi aggiungi gli header che i browser usano per difendere i tuoi utenti: Content-Security-Policy per contenere le injection, Strict-Transport-Security per bloccare l'HTTPS e X-Frame-Options per impedire il clickjacking. La maggior parte delle app generate non ne include nessuno per impostazione predefinita. Guarda gli header di sicurezza HTTP spiegati.
3. Regole del database (RLS) su ogni tabella
Se usi Supabase o Firebase, la tua app comunica con il database direttamente dal browser, quindi le regole del database sono l'unica cosa che si frappone tra un visitatore e i tuoi dati. Attiva il Row-Level Security su ogni tabella (non solo su quelle importanti) con una policy che nega tutto per impostazione predefinita, e non affidarti mai al nascondere un pulsante nell'interfaccia. Senza di esso, chiunque abbia la chiave pubblica legge e scrive nelle tue tabelle senza fare login, esattamente il difetto dietro la vulnerabilità RLS di Lovable.
4. Nessun file sensibile esposto
Assicurati che .env, .git, i backup del database e le source map non siano raggiungibili da un browser. È sorprendentemente comune: una singola richiesta a /.env può consegnare ogni segreto che la tua app usa, e le source map pubblicate permettono a chiunque di ricostruire il tuo codice originale. Blocca questi elementi nella configurazione del tuo host o del tuo framework.
5. CORS ben limitato
Una policy CORS permissiva che riflette qualsiasi origine con credenziali permette a un sito malevolo di leggere i dati dei tuoi utenti usando la loro sessione. Limita le origini consentite ai domini che controlli davvero, e non combinare mai Access-Control-Allow-Origin: * con le credenziali.
6. Cookie e sessioni configurati correttamente
I cookie di sessione dovrebbero avere Secure (solo HTTPS), HttpOnly (illeggibili da JavaScript, così un XSS non può rubarli) e SameSite (difende dal CSRF). Questi tre attributi sono una riga di configurazione e chiudono un'intera categoria di bug di furto di account.
La tua checklist pre-lancio di 2 minuti
- Nessuna chiave
sk_live_,service_roleo privata nel tuo JavaScript. - HTTPS forzato, con CSP, HSTS e X-Frame-Options impostati.
- Row-Level Security su ogni tabella del database.
.env,.git, backup e source map non raggiungibili.- CORS limitato alle tue origini, nessun wildcard con credenziali.
- Cookie con Secure, HttpOnly e SameSite.
Falla e basta
Invece di controllare tutto questo a mano, usa Scanaris: verifica questi punti e circa altri 40 sul tuo sito live in 30 secondi, ordina i risultati per impatto e ti dà un prompt pronto da incollare per risolvere ognuno con la tua IA, prima che lo trovi qualcun altro.