Scansione dei segreti e credenziali hardcoded
Impedisca il commit di chiavi API e password utilizzando git-secrets, gitleaks e hook pre-commit.
Scansione dei segreti e credenziali hardcoded è una lezione Cyber Security Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cyber Security Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cyber Security Academy include 4 lezioni in totale.
Il problema dei segreti hardcoded
Gli sviluppatori inseriscono accidentalmente chiavi API, password, chiavi private e token nei repository del codice sorgente. Una volta presenti nella cronologia di git, persistono anche dopo l'eliminazione. I repository pubblici vengono acquisiti dai bot entro pochi secondi dal push.
Cosa viene inserito nel repository
Segreti comunemente presenti nei repository:
- Chiavi di accesso AWS (
AKIA...) - Token di accesso personali GitHub
- Password dei database nei file di configurazione
- Chiavi API di Stripe e per i pagamenti
- Chiavi private TLS/SSH
- URL dei webhook Slack
Hook pre-commit per la prevenzione
Impedire ai segreti di raggiungere git fin dall'inizio:
# Install gitleaks as a pre-commit hook:
pip install pre-commit
# .pre-commit-config.yaml:
repos:
- repo: https://github.com/zricethezav/gitleaks
rev: v8.18.1
hooks:
- id: gitleaksScansione dei repository esistenti
Eseguire la scansione dei repository esistenti alla ricerca di segreti:
# gitleaks: scan entire git history
gitleaks detect --source . --log-opts="--all"
# truffleHog: high-entropy string + regex detection
trufflehog git file://.
# GitHub secret scanning (automatic for public repos)
# Alerts under Security → Secret scanning alertsScansione dei segreti su GitHub
GitHub analizza automaticamente i repository pubblici alla ricerca di pattern di segreti noti (chiavi AWS, token GitHub e così via) e informa il provider. Per i repository privati, GitHub Advanced Security estende questa funzionalità. Provider come AWS revocano automaticamente le chiavi quando vengono rilevate.
La soluzione .gitignore (e i suoi limiti)
Aggiungere .env a .gitignore impedisce i commit accidentali. Tuttavia, gli sviluppatori possono comunque inserire segreti in altri file e .gitignore non è utile se il file è già stato sottoposto a commit. Difesa a più livelli: gitignore, hook pre-commit e scansione CI.
Usare le variabili d'ambiente
I segreti non devono mai comparire nel codice. Usare variabili d'ambiente caricate a runtime:
# Python:
import os
api_key = os.environ["API_KEY"]
# Node.js with dotenv (for local dev only):
require("dotenv").config()
const apiKey = process.env.API_KEY
# Never commit .env to gitSecrets manager
Le applicazioni di produzione dovrebbero usare secrets manager dedicati:
- AWS Secrets Manager — rotazione automatica, accesso controllato tramite IAM
- HashiCorp Vault — open source, di livello enterprise, compatibile con numerosi backend
- Azure Key Vault / GCP Secret Manager
I segreti non vengono mai memorizzati nel codice o in variabili d'ambiente su disco.
Ruotare i segreti compromessi
Se un segreto viene esposto:
- Revocare immediatamente il segreto (prima di svolgere le verifiche)
- Controllare i log di accesso per individuare utilizzi non autorizzati
- Generare un nuovo segreto
- Aggiornare tutti i sistemi che usano il vecchio segreto
- Rimuoverlo dalla cronologia git con
git-filter-repoo BFG Repo Cleaner
Rimuovere i segreti dalla cronologia Git
Dopo la revoca, rimuoverli dalla cronologia:
# BFG Repo Cleaner (faster than filter-branch):
java -jar bfg.jar --delete-files .env repo.git
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push --force
# Note: force push rewrites history - coordinate with teamSegreti nelle pipeline CI/CD
I sistemi CI/CD dispongono di una gestione separata dei segreti:
- GitHub Actions: segreti memorizzati nelle impostazioni del repository o dell'organizzazione → accessibili come
${{ secrets.API_KEY }} - GitLab CI: variabili CI/CD
- Jenkins: plugin Credentials
Mascherare i segreti nei log. Non stamparli mai nell'output di debug.
Verifica rapida: scansione dei segreti
Qual è la prima linea di difesa più efficace per impedire che i segreti entrino in un repository?
Riepilogo della lezione
I segreti hardcoded in git rappresentano un rischio critico: i repository pubblici vengono acquisiti dai bot entro pochi secondi. Prevenzione: hook pre-commit (gitleaks), gitignore. Rilevamento: truffleHog, scansione dei segreti di GitHub. Memorizzare i segreti in variabili d'ambiente o in secrets manager dedicati (Vault, AWS Secrets Manager). Ruotarli immediatamente quando vengono esposti e rimuoverli dalla cronologia git con BFG Repo Cleaner.
Domande Frequenti
La lezione «Scansione dei segreti e credenziali hardcoded» è gratuita?
Sì — il testo completo di «Scansione dei segreti e credenziali hardcoded» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cyber Security Academy, passa a CoddyKit PRO. Il corso Cyber Security Academy include 4 lezioni in totale.
Cosa imparerò in «Scansione dei segreti e credenziali hardcoded»?
Impedisca il commit di chiavi API e password utilizzando git-secrets, gitleaks e hook pre-commit. Eserciti Cyber Security Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cyber Security Academy?
Non è richiesta alcuna esperienza precedente. Cyber Security Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Scansione dei segreti e credenziali hardcoded»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cyber Security Academy?
Sì. Ogni lezione Cyber Security Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- SAST e DAST nelle pipeline CI/CD
- Analisi della composizione del software (SCA)
- Scansione dei segreti e credenziali hardcoded
- Security Champion e threat modeling