Implementa autenticazione sicura quando un sito/app richiede registrazione, login o account utente. Copre verifica email con codice, autenticazione a due fattori (2FA/TOTP), passkey e chiavi di sicurezza, hashing password, sessioni e recupero account. Trigger - "login", "registrazione", "verifica email", "codice di verifica", "2FA", "doppio fattore", "autenticazione", "passkey", "account utente".
SkillScore100Maintained
Automatic
◆Security & AppSec pack
Last verified 9/24/2026
What it changes
Passed 23 of 23 test cases with the skill, and 16 of 23 without it.
Without skill70%
With skill100%
Checks it passed that the model alone missed
Sets OTP code validity to 10 minutes.
Sets OTP validity window to 10 minutes.
Limits JWT access token lifetime to 15 minutes.
and 8 more in the full report
7 fixed16 passed either way0 still failing0 broke
Pass-rate lift
+30 pp
Tokens
+15%
Agent turns
0%
Response time
-7%
Model gemini-3.6-flashMeasured 9/24/2026v123 of 23 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 7 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 7
Prompt
Sto sviluppando una nuova applicazione web e devo progettare l'architettura completa per la gestione degli utenti e l'autenticazione. Potresti fornirmi una guida tecnica con le regole per l'hashing sicuro delle password, il processo di verifica della registrazione tramite codice email e la gestione corretta dei token di sessione?
What was checked, without and with the skill
Checked
Without skill
With skill
Recommends Argon2id or bcrypt with a cost factor of at least 12 for password hashing.
Passed
Passed
Proposes optional two-factor authentication alongside password and email code verification for default auth stack.
Missed
Passed
Specifies returning an identical response for wrong password and non-existent user.
Passed
Passed
Specifies a 6-digit numeric OTP code generated via CSPRNG.
Passed
Passed
case-01 · gemini-3.6-flash · 9/24/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md36 linessingle file
Autenticazione Sicura
Quando un sito/app prevede account utente, implementare l'autenticazione secondo queste regole. Se l'utente non specifica i dettagli, proporre di default: password + verifica email con codice + 2FA opzionale.
Password
Hash con Argon2id (preferito) o bcrypt (cost ≥ 12). MAI MD5/SHA1/SHA256 semplice, mai password in chiaro.
Lunghezza minima 8-12 caratteri; verificare contro liste di password compromesse se possibile.
Rate limiting sul login: max ~5 tentativi per account/IP in 15 minuti, poi blocco temporaneo crescente. Risposta identica per "utente inesistente" e "password errata".
Verifica email con codice (OTP)
Codice numerico a 6 cifre generato con CSPRNG (crypto.randomInt, secrets.randbelow), MAI Math.random().
Validità 10 minuti, monouso, max 5 tentativi di inserimento, poi invalidare e rigenerare.
Salvare nel DB solo l'hash del codice, con scadenza. Rate limiting sull'invio (max 1 ogni 60s, 5/ora per indirizzo).
Stesso schema per: conferma registrazione, reset password, conferma di azioni sensibili (cambio email, cambio IBAN, cancellazione account).
2FA / doppio fattore
Offrire in ordine di preferenza:
Passkey / chiavi di sicurezza (WebAuthn/FIDO2) — resistenti al phishing. Librerie: @simplewebauthn/server (Node), webauthn (Python).
TOTP (Google Authenticator ecc.) — segreto generato server-side, mostrato via QR, verificato con finestra ±1 step. Librerie: otplib, pyotp.
Codice via email — minimo accettabile; SMS solo se richiesto esplicitamente.
Regole:
Alla attivazione del 2FA generare 10 codici di recupero monouso (mostrati una sola volta, salvati hashati).
Richiedere il 2FA a ogni login da dispositivo nuovo e per azioni sensibili (step-up).
Disattivazione 2FA solo con ri-autenticazione completa.
Sessioni e token
Vedi skill hardening-siti per i cookie. In più: invalidare tutte le sessioni al cambio password; lista "dispositivi connessi" con revoca.
Se si usano JWT: scadenza breve (15 min) + refresh token revocabile salvato server-side; algoritmo fissato (no alg: none).
Recupero account
Reset password tramite link/codice monouso a scadenza, MAI domande di sicurezza.
Notificare via email ogni evento sensibile: login da nuovo dispositivo, cambio password/email, attivazione/disattivazione 2FA.
Cosa non fare mai
Inviare password via email. Loggare password o codici OTP. Rivelare se un'email è registrata (enumerazione). Implementare crittografia "fatta in casa".