Skip to the content.

99 — Cheat Sheet finale & Checklist deploy-ready

Sintesi globale del corso. Stampabile, da tenere a portata. Non sostituisce i moduli — li riassume.


1. Le 10 categorie in una tabella

# Categoria Sintomo tipico UNA difesa-chiave
A01 Broken Access Control Cambio id=42→id=43 e vedi dati altrui Ownership server-side: WHERE user_id = :current_user + deny by default
A02 Security Misconfiguration Stack trace, default password, header mancanti Hardening automatizzato e ripetibile + Mozilla Observatory
A03 Software Supply Chain Failures Dipendenza compromessa, CI/CD bucato SBOM + scanner continuo + firma artefatti
A04 Cryptographic Failures MD5 sulle password, TLS < 1.2 Argon2id per password + TLS 1.3 + AEAD
A05 Injection ' OR '1'='1, <script>, ; cat /etc/passwd Query parametrizzate + CSP + escape context-aware
A06 Insecure Design Manca un controllo necessario, non un bug nel codice Threat modeling (STRIDE) prima di codificare
A07 Authentication Failures Brute force/cred stuffing senza limiti, no MFA MFA (passkey > TOTP > SMS) + rate limit + breached-password check
A08 Software/Data Integrity Failures pickle.loads(user_input), no SRI, no firma Mai deserializzare oggetti ostili + firmare artefatti
A09 Security Logging & Alerting Breach scoperto da terzi, log scarsi Logging strutturato + SIEM + use case di alerting
A10 Mishandling of Exceptional Conditions except: pass, race condition, fail-open Fail-closed + transazioni atomiche + idempotency + rate limit

2. Mappa categorie ↔ tool / standard

Standard/framework di riferimento

Tool consigliati per categoria

Tipo di tool Categoria principale Esempi
SAST (analisi statica) A05, A06, A10 Semgrep, CodeQL, SonarQube
DAST (test dinamici) A01, A05 OWASP ZAP, Burp Suite
SCA (composition analysis) A03, A08 Dependency-Track, Snyk, Trivy, npm audit, pip-audit
Secrets scanner A02, A03, A04 gitleaks, trufflehog, GitHub secret scanning
IaC scanner A02 Checkov, KICS, tfsec
Container scanner A02, A03 Trivy, grype, Clair
Cloud posture (CSPM) A02 ScoutSuite, Prowler, AWS Security Hub
Header / TLS audit A02, A04 Mozilla Observatory, SSL Labs, testssl.sh
Signing A03, A08 cosign / Sigstore, Authenticode
WAF A05 (secondary) ModSecurity + CRS, Cloudflare, AWS WAF
SIEM / logging A09 Loki+Grafana, Elastic, Splunk, Wazuh
Threat modeling A06 OWASP Threat Dragon, MS Threat Modeling Tool

3. Checklist “Pre-Deploy” (deploy-ready)

Da rispondere ✅ prima di mettere qualunque cosa in produzione. Se anche una sola è ❌, fermati.

Identità & accesso (A01, A07)

Configurazione & deploy (A02)

Supply chain & integrità (A03, A08)

Cripto (A04)

Input & output (A05, A02)

Design & business logic (A06)

Logging & alerting (A09)

Resilienza (A10)


4. Workflow consigliato di adoption

Se la tua org parte da zero, non affrontare le 10 categorie in parallelo. Ordine pragmatico:

  1. A01 + A07: protezione dell’accesso (auth/authz). È il bersaglio #1 degli attacchi.
  2. A04: cripto basica (TLS, password storage, HSTS). Velocissimo da fixare, alto ROI.
  3. A02: hardening (header, default cred, IAM, secrets in vault). Quick win.
  4. A05: injection — code review + ORM + CSP + WAF come safety net.
  5. A03: supply chain — SBOM + scanner continuo. Ti scopre rischi accumulati.
  6. A09: logging strutturato + alerting. Senza visibilità, non sai se sei attaccato.
  7. A10: error handling, fail-closed, idempotency. Si fa man mano sui flussi critici.
  8. A08: integrità — SRI, firme, blocco deserializzazione ostile.
  9. A06: threat modeling — è il livello “mature” che permea il resto.

5. Anti-pattern memorizzabili (le cose che fanno tutti e che fanno male)

❌ Anti-pattern Perché è male Cosa fare
Controllo authz solo lato client (JS che nasconde un bottone) Il client è dell’attaccante Server-side, sempre
WHERE id = ? senza AND user_id = ? IDOR Filtro di ownership nella query
SELECT * FROM x WHERE name = '${input}' SQLi Prepared statement
MD5(password) o SHA-256(password) Veloce → crackabile Argon2id + salt
Math.random() per token Predicibile crypto.randomBytes
except Exception: pass Maschera tutto, fail-open Cattura specifico, log, fail-closed
pickle.loads(user_input) RCE JSON + schema
exec("cmd " + input) Command injection execFile con args
Set-Cookie: id=X (senza flag) XSS theft, CSRF Secure; HttpOnly; SameSite
Stack trace al client in prod Reconnaissance gratuita Errori generici + log lato server
npm install in CI Non deterministico, può tirare nuovo malware npm ci + lockfile
Default credentials (admin/admin) Trovati in 30 secondi Disabilita / forza-cambio al primo login
Storing JWT in localStorage Leggibile da JS → XSS theft Cookie HttpOnly o memoria volatile
1 sola password come fattore Credential stuffing MFA (preferibile passkey)
Bucket S3 “public-read” Data leak in 1 click Block Public Access + IAM esplicito
Log con password/token Leak nel SIEM Redact + non loggare segreti
alg: "none" in JWT Bypass firma Specifica algorithms=['RS256']

6. La regola dei 5 minuti

Quando qualcuno ti propone un nuovo flusso, applica STRIDE in 5 minuti:

Per ogni lettera, una minaccia plausibile + una mitigazione.

Lettera Domanda
Spoofing Posso fingermi un altro? Auth/MFA copre?
Tampering Posso alterare dati in transito o a riposo? TLS, signed payload, integrity check?
Repudiation L’utente può negare? Audit log immodificabile?
Information disclosure Risposte/log/errori leakano info?
DoS Saturazione, race, illimitati? Rate limit, quota, timeout, circuit breaker?
Elevation Privilege escalation? Ownership check, deny-by-default?

Se passa STRIDE, non hai costruito un sistema sicuro — ma hai eliminato i 6 errori più comuni.


7. Mantra finali


8. Risorse master

Le risorse “definitive” che vale la pena salvare in segnalibro:


⬅ Torna al README · 📚 Glossario · 🚀 00_introduzione.md