Scansioni una pagina pubblica alla ricerca di 25 tipi di segreti esposti
Le app fatte con il vibe coding spesso mandano chiavi al browser. Inserisca l’indirizzo di una sola pagina sua e lo scanner legge l’HTML di quella pagina e i file di script collegati, alla ricerca di chiavi API, token e URL di database che un visitatore potrebbe copiare. I valori sono mostrati mascherati.
Risultato
Cosa questa scansione non può vedere
Lo scanner legge solo i file che il browser di un visitatore scarica dalla pagina. Non vede segreti che restano sul server, pagine dietro un login, file caricati più tardi con import() né source map. Un risultato pulito non dimostra che l’app sia sicura.
Tutti i 25 tipi di chiave
20 di questi sono segreti che non devono mai arrivare a un browser. 5 sono pubblici per progetto.
Le chiavi segnate come pubbliche, come una chiave anon di Supabase, una apiKey di Firebase o una chiave pubblicabile di Stripe, sono pensate per il browser. Sono sicure solo finché le regole del suo database proteggono i dati che stanno dietro.
| Tipo di chiave | ID | Gravità | Natura |
|---|---|---|---|
| Chiave API di OpenAI | openai-key | Critica | Segreto |
| Chiave API di Anthropic | anthropic-key | Critica | Segreto |
| Chiave segreta live di Stripe | stripe-secret | Critica | Segreto |
| Chiave segreta di test di Stripe | stripe-test-secret | Media | Segreto |
| Chiave pubblicabile di Stripe | stripe-publishable | Info | Pubblica per progetto |
| ID della chiave di accesso AWS | aws-access-key | Alta | Segreto |
| Chiave di accesso segreta AWS | aws-secret | Critica | Segreto |
| Token GitHub | github-token | Critica | Segreto |
| Chiave API di Google | google-api-key | Info | Pubblica per progetto |
| apiKey della configurazione web di Firebase | firebase-web-config | Info | Pubblica per progetto |
| Chiave service_role di Supabase | supabase-service-role-jwt | Critica | Segreto |
| Chiave anon di Supabase | supabase-anon-jwt | Info | Pubblica per progetto |
| JSON Web Token | jwt-other | Bassa | Segreto |
| Chiave segreta di Supabase | supabase-secret-key | Critica | Segreto |
| Chiave pubblicabile di Supabase | supabase-publishable-key | Info | Pubblica per progetto |
| Token Slack | slack-token | Critica | Segreto |
| URL del webhook Slack | slack-webhook | Alta | Segreto |
| Chiave API di SendGrid | sendgrid-key | Critica | Segreto |
| SID della chiave API di Twilio | twilio-key | Alta | Segreto |
| Chiave API di Mailgun | mailgun-key | Alta | Segreto |
| Blocco di chiave privata | private-key-block | Critica | Segreto |
| URL di database con password | database-url | Critica | Segreto |
| Token npm | npm-token | Critica | Segreto |
| Token Hugging Face | huggingface-token | Alta | Segreto |
| Chiave API di Resend | resend-key | Alta | Segreto |
Domande
Cosa legge lo scanner di segreti?
Legge l’HTML della pagina e fino a 14 file di script collegati, 3 MB in totale, i primi 512 KB della pagina e i primi 1 MB di ciascun file. Cerca formati di chiave noti, come chiavi API, token di accesso, blocchi di chiave privata e URL di database con password.
Dove gira la scansione e quanto dura?
La scansione gira nel suo browser; il nostro server si limita a scaricare i file per lei, una richiesta per file. Non viene salvato nulla. Su un sito lento una scansione può durare fino a circa un minuto e mezzo.
Cosa non può vedere lo scanner?
Segreti che esistono solo sul server, pagine dietro un login, chunk che la pagina carica più tardi con import() e source map. Non può nemmeno sapere se una chiave trovata è ancora attiva. Un risultato pulito non dimostra che l’app sia sicura.
Perché alcune chiavi sono segnate come pubbliche per progetto?
Una chiave anon o pubblicabile di Supabase, una apiKey di Firebase, una chiave API di Google e una chiave pubblicabile di Stripe sono fatte per essere inviate al browser. Identificano il suo progetto e concedono solo ciò che permettono le regole del suo database, le restrizioni dell’API e i controlli del server. Vengono segnalate perché possa confermare che quelle regole esistono, non perché la chiave in sé sia una fuga.
Cosa devo fare se un segreto vero viene esposto?
Lo ruoti per prima cosa: crei una nuova chiave presso il fornitore e revochi la vecchia. Poi sposti la nuova chiave nel codice lato server o nelle variabili d’ambiente e faccia di nuovo il deploy. Cancellare la chiave dal codice non basta, perché il vecchio valore resta nelle build precedenti, nelle cache e nella cronologia di git.
Perché le app fatte con il vibe coding espongono chiavi così spesso?
Il codice scritto in fretta con strumenti di IA spesso chiama un’API a pagamento o privilegiata direttamente dal browser, e la chiave finisce nello script che ogni visitatore scarica. La sicurezza nel vibe coding comincia dal tenere queste chiamate sul server.