// docs / security guides / claude code checklist
Checklist sicurezza Claude Code: 26 voci
Claude Code (l'agente CLI di Anthropic) genera intere basi di codice tramite comandi slash, gestisce il refactoring multi-file e legge i file/writes tramite bash. Questa lista di controllo mira ai rischi specifici di Claude Code: nessuna politica di sicurezza predefinita, limitazione della velocità aggiunta raramente, <code>.claude/CLAUDE.md</code> come file di protezione della sicurezza e il rischio di impegnare <code>.env</code> o token memorizzati nella cache. 26 elementi tra segreti, database, autenticazione, intestazioni, distribuzione e trucchi specifici di Claude Code.
PRE = pre-distribuzione (controlla la tua origine). DEPLOY = al momento della distribuzione. POST = verifica post-distribuzione. Gli elementi fanno riferimento a FixVibe, controlla gli ID nel modulo category.check-id, ove pertinente.
Segreti e chiavi API (5 articoli)
Claude Code legge interi alberi di sorgenti e restituisce interi file. I segreti nel tuo contesto diventano segreti nell'output.
- PRE — Create
.claude/CLAUDE.mdwith security policies. Aggiungere: "Security Rules: Non incorporare mai le chiavi service_role nei bundle client. Instradare sempre le operazioni sensibili attraverso endpoint solo server. Verificare che le variabili env NEXT_PUBLIC_* contengano solo valori sicuri (nessuna chiave, nessun token)." Claude Code legge.claude/CLAUDE.mdper indicazioni sul progetto. - PRE — Ensure
.env.localis in.gitignore. Claude Code potrebbe commettere accidentalmente.env.localdurante un refactoring. Eseguigit ls-files .env*per verificare cosa viene tracciato. Se.env.localè presente, viene esposto. - PRE — Audit generated API routes for env-var verification. Claude Code a volte dimentica di verificare che
process.env.SECRETesista lato server prima di utilizzarlo. Le rotte dovrebbero fallire rapidamente se manca una variabile env, non passare a un valore predefinito. - PRE — Check the
.claudecache directory. Claude Code memorizza nella cache il contesto della conversazione in.claude/cacheo.claude/history. Questi file non devono essere sottoposti a commit. Aggiungi.claude/a.gitignore. - POST — Run secrets.browser-storage on the deployed app. Se Claude Code ha inserito una chiave, la scansione passiva la troverà nel bundle renderizzato.
Controllo dell'accesso al database (4 articoli)
Claude Code è eccellente per generare schemi, ma le policy RLS necessitano di istruzioni esplicite.
- PRE — Instruct Claude Code on RLS in
.claude/CLAUDE.md. Aggiungere: "Ogni migrazione deve includereALTER TABLE ... ENABLE ROW LEVEL SECURITYeFORCE ROW LEVEL SECURITY. Ogni policy deve convalidareauth.uid()dell'utente." - PRE — Review generated migrations for
FORCE ROW LEVEL SECURITY. Claude Code può generareENABLEma dimenticaFORCE. SenzaFORCE, i proprietari delle tabelle (il corridore della migrazione) ignorano RLS. Aggiungilo manualmente se mancante. - DEPLOY — Test RLS enforcement after deploy. Apri Supabase Studio, scegli un tavolo, conferma che RLS l'interruttore è ON. Se la migrazione di Claude Code ha utilizzato
ENABLEsenzaFORCE, l'interruttore indicherà ON ma l'applicazione è incompleta. - POST — Run the baas.supabase-rls active check. Tenta una scrittura con la chiave anon. Se ha esito positivo, RLS è incompleto. Aggiungi
FORCEalla migrazione e ridistribuisci.
Autenticazione e sessioni (4 articoli)
Claude Code genera bene i flussi di autenticazione ma non aggiunge automaticamente limiti di velocità né verifica tutte le attestazioni di token sul lato server.
- PRE — Mandate server-only auth verification in
.claude/CLAUDE.md. Aggiungere: "Ogni percorso API che modifica i dati deve verificare l'utente conawait supabase.auth.getUser()sul server. Non fidarsi mai digetSession()o dell'utente ID dal corpo della richiesta." - PRE — Check generated auth handlers for token expiry. I token Magic-link e di reimpostazione della password richiedono l'applicazione del server
expires_at. Chiedi a Claude Code: "Aggiungi un controllo che rifiuti i token più vecchi di 1 ora." - PRE — Verify sign-in redirect guards. Il reindirizzamento param
nextdeve iniziare con/e non//. Aggiungere a.claude/CLAUDE.md: "Convalida il parametronext: deve iniziare con/, rifiutare se inizia con//o contiene un protocollo." - POST — Test logout clears cookies. Accedi, esci, controlla l'applicazione → Cookie. Il cookie di sessione deve essere cancellato. Se persiste, l'endpoint di logout non distrugge lo stato.
HTTP intestazioni e CSP (3 elementi)
Claude Code non genera middleware per impostazione predefinita a meno che tu non lo chieda.
- PRE — Add middleware request to
.claude/CLAUDE.md. Include: "Generasrc/middleware.tscon Content-Security-Policy utilizzando intestazioni nonce per richiesta, HSTS, X-Frame-Options e X-Content-Type-Options." Quindi chiedi a Claude Code di implementarlo. - PRE — Verify
src/middleware.tsexists and has CSP. Con il layout Next.jssrc/, il middleware deve trovarsi insrc/middleware.ts, non nella radice del progetto. Verificare che l'intestazione CSP includa'strict-dynamic'e un nonce. - POST — Run headers.security-headers on the deployed URL. Il controllo segnala intestazioni mancanti e suggerisce correzioni per la tua piattaforma.
Igiene della distribuzione (4 articoli)
Claude Code non configura la tua piattaforma di distribuzione: è una tua responsabilità, ma vale la pena verificarlo.
- DEPLOY — Scope env vars per environment in Vercel (or equivalent). Impostazioni → Variabili d'ambiente → assegna ciascun segreto solo a Production. Non condividere mai
sk_live_*con Anteprima o Sviluppo. - DEPLOY — Audit your CI workflow for secret echo. Se GitHub Actions o un altro CI ha
echo $SECRETovunque, rimuovilo. I registri di build vengono archiviati; i segreti nei log sono compromessi. - Le Impostazioni di DEPLOY — Prefer platform-native secret storage. Vercel → Variabili d'ambiente sono crittografate; GitHub I segreti delle azioni sono meglio di niente ma non corrispondono allo spazio di archiviazione nativo della piattaforma.
- POST — Rotate any key that reached a public build. Se una chiave appare in un'anteprima Vercel URL o in qualsiasi artefatto pubblico anche solo per secondi, è compromessa. Gira subito.
Claude Code trucchi specifici (5 articoli)
Modelli unici per l'architettura e i flussi di lavoro di Claude Code:
- Claude Code forks work into subagents. Nelle attività di grandi dimensioni, Claude Code può generare più istanze di subagente, ciascuna con un contesto codebase parziale. Se un subagente ha allucinazioni su uno schema di sicurezza segreta che un altro non ha, emerge un'incoerenza. Rivedi attentamente la differenza finale.
- Bash operations are unverified. Claude Code esegue direttamente i comandi bash.
git commit -m "fix"è conveniente, ma se la directory di lavoro ha un file.enve un glob lo include, esegue il commit. Rivedi sempregit diff --cachedprima di eseguire il commit di Claude Code. - Context window boundaries create gaps. Se la base di codice è grande, il contesto di Claude Code potrebbe essere suddiviso in più finestre. La gestione
.env.localdi una finestra potrebbe differire da quella di un'altra. Applica la policy in.claude/CLAUDE.mde verifica l'output. - Rate-limiting is almost never added without asking. Claude Code genera CRUD funzionanti ma raramente include intestazioni che limitano la velocità o logica di backoff esponenziale. Richiedetelo esplicitamente in
.claude/CLAUDE.md. .claude/CLAUDE.mdis read but not enforced. Claude Code legge il tuo.claude/CLAUDE.mdcome un suggerimento, non come un vincolo. Se il suggerimento è in conflitto con l'attività, Claude Code potrebbe ignorarlo. Esamina sempre l'output.
Prossimi passi
Controllare general vibe coding security checklist per 44 elementi tra strumenti, quindi vedere step-by-step hardening per i modelli in fase di distribuzione. Se utilizzi anche Cursor, consulta Cursor security checklist.
