Sicurezza

Questo documento fornisce informazioni su password, autenticazione, configurazione SSL, segregazione di rete, comunicazioni crittografate, intestazioni HTTP e protocollo TLS del server web in relazione al client dell'API di WhatsApp Business.

Password e autenticazione

Fai riferimento alla documentazione di accesso e autenticazione per maggiori informazioni su token di autenticazione e best practice relative alle password.

Configurazione SSL

L'accesso al client dell'API di WhatsApp Business richiede HTTPS.

Il client dell'API di WhatsApp Business genera un certificato autofirmato per impostazione predefinita quando viene creato. Il certificato dell'autorità di certificazione (CA) usato per generare il certificato autofirmato potrebbe essere richiesto per verificare l'endpoint WhatsApp Business API Client ed evitare un avviso di attendibilità del certificato. In alternativa, puoi caricare il certificato CA invece del certificato autofirmato. Consulta la documentazione sui certificati CA per maggiori informazioni.

Poiché Webhooks richiede anche HTTPS per le callback, puoi usare i tuoi certificati CA per evitare che l'app riscontri errori SSL quando tenta di effettuare una richiesta POST al webhook configurato. Consulta la documentazione sui certificati CA per Webhooks per maggiori informazioni.

Segregazione di rete

Ti consigliamo di ospitare i nodi Webapp e Coreapp in reti segregate separate e di esporli solo ai servizi richiesti.

Il nodo Webpp deve esporre gli endpoint API e Web Administration solo alle reti dove sono ospitati i clienti dell'API di WhatsApp Business e le postazioni da lavoro del personale dirigente.

I nodi Coreapp devono esporre il servizio di comunicazione solo ai nodi Webpp e, in una configurazione Multiconnect, esporre il servizio di controllo solo ad altri nodi Coreapp.

Comunicazioni crittografate

Comunicazione da Webapp a Coreapp

È consigliabile impostare la variabile ambientale WA_SECRET in entrambi i contenitori Coreapp e Webapp per garantire che le comunicazioni tra loro siano crittografate.

Nota: gli host Coreapp e Webapp dovranno sincronizzare i loro orologi affinché la crittografia funzioni perfettamente. In caso di derive temporali, la protezione di riproduzione (ovvero, un controllo di data e ora con 10 secondi di tolleranza) potrebbe causare un errore di comunicazione.

Comunicazione del database

Puoi configurare i parametri SSL utilizzati per crittografare la connessione al database per proteggere i dati in transito.

Precedentemente, solo la connessione da Coreapp a database poteva essere crittografata usando la variabile ambientale WA_DB_CONNECTION_OPTION, perché tradizionalmente solo Coreapp aveva accesso al database. Tuttavia, il contenitore Webapp accede anche al database, quindi è importante crittografare la connessione da Webapp a database. Per questo, la configurazione SSL viene modificata per renderla neutra per tutti i contenitori. La crittografia può essere configurata utilizzando le seguenti variabili ambientali:

  • WA_DB_SSL_KEY
  • WA_DB_SSL_CERT
  • WA_DB_SSL_CA
  • WA_DB_SSL_VERIFY

WA_DB_SSL_VERIFY può essere configurato per verificare l'identità del server. Questo passaggio è richiesto in alcune configurazioni di sviluppo interne ed è altamente consigliabile non disabilitare la verifica. Se questo parametro non è impostato, la verifica è attivata per impostazione predefinita. Per disabilitare la verifica, utilizzare:

WA_DB_SSL_VERIFY=0

Nota:WA_DB_SSL_VERIFY è applicabile solo per Webapp.

Per la compatibilità con le versioni precedenti, WA_DB_CONNECTION_OPTION continuerà ad essere supportato in modalità obsoleta e utilizzato per crittografare la connessione da Coreapp a database. È consigliabile passare a questi nuovi parametri.

Tutti i file configurati nelle variabili ambientali Key, Cert e CA devono essere accessibili all'interno del contenitore. Per fare ciò, puoi creare una directory certs sotto il volume di dati con le autorizzazioni appropriate. Il volume di dati è in genere montato come /usr/local/waent/data e la directory dei certificati sarebbe quindi accessibile su /usr/local/waent/data/certs all'interno del contenitore.

Server web (TLS)

Il protocollo TLS e le cifre sono stati configurati in conformità alle configurazioni raccomandate da Mozilla. Webapp supporta 3 profili: MODERN (predefinito), INTERMEDIATE e OLD.

Si consiglia di mantenere la configurazione predefinita per una maggiore sicurezza. Tuttavia, puoi scegliere di eseguire il downgrade del tuo profilo usando la variabile ambientale WA_WEB_SECURITY_LEVEL.

Intestazioni HTTP

Le seguenti intestazioni HTTP sono supportate per il Web Admin ma non per gli endpoint API e sono soggette al browser in uso.

NomeDescrizione

X-Content-Security-policy

Definisce la politica che consente solo agli script dello stesso dominio di essere eseguiti sul Web Admin.

X-Frame-Options

L'intestazione non consente a nessun dominio di includere la pagina Web Admin come un iframe.

X-XSS

Un'intestazione di protezione che protegge la pagina Web Admin dagli attacchi di cross-site scripting disinfettando gli input se viene rilevato un attacco.

X-Content-Type-Options

Assicura che il tipo di contenuto ricevuto dal server sia uguale a quello richiesto dal server.

Strict-Transport-Security

Assicura che il Web Admin sia accessibile solo tramite HTTPS.