Tipi di credenziali e loro sicurezza
La WhatsApp Business API usa due tipi principali di credenziali: il System User Token di Meta (per accesso diretto all'API Meta Cloud) e le API key del provider BSP (per accesso tramite intermediario come Chat API). Non confondere i due: hanno scope e cicli di vita diversi.
Il System User Token di Meta non ha scadenza automatica ma puo essere revocato manualmente. Per massimizzare la sicurezza, usa token con scope limitato: crea un System User nel Meta Business Manager con i permessi strettamente necessari per le operazioni di invio e ricezione messaggi, senza permessi di amministrazione dell'account.
Per Chat API, le credenziali sono API key generate dalla piattaforma. Ogni applicazione o ambiente (staging, produzione) deve avere API key separate. Non usare le stesse credenziali di produzione per i test.
Gestione sicura delle credenziali nel codice
Non inserire mai le credenziali API direttamente nel codice sorgente. Usa variabili d'ambiente per le credenziali: il codice legge la chiave da process.env.CHAT_API_KEY invece di avere la chiave hardcoded. Questo previene l'esposizione accidentale delle credenziali nei repository di codice.
Usa un secret manager (AWS Secrets Manager, HashiCorp Vault, Google Cloud Secret Manager) per i sistemi in produzione. Questi strumenti gestiscono la crittografia, la rotazione automatica e l'audit log degli accessi ai segreti.
Nei pipeline CI/CD, usa le funzionalita di secrets management del tuo provider (GitHub Secrets, GitLab CI Variables, Bitbucket Pipelines Variables). Non passare mai le credenziali come argomenti di riga di comando o nei log del build.
Rotazione delle credenziali
Implementa una policy di rotazione delle credenziali: ruota le API key almeno ogni 90 giorni, o immediatamente se sospetti una compromissione. Chat API permette di generare nuove API key e invalidare quelle vecchie senza downtime se il processo di rotazione e gestito correttamente.
Verifica della firma dei webhook
I webhook inviati da WhatsApp Business API includono una firma HMAC-SHA256 nell'header. Verifica sempre questa firma prima di processare il payload: se la firma non corrisponde, rifiuta la richiesta con un errore 401.
La verifica della firma previene attacchi in cui un attore malintenzionato invia richieste false al tuo endpoint webhook per triggerare azioni non autorizzate. Chat API documenta il processo di verifica della firma nella documentazione tecnica con esempi in Python, Node.js e PHP.