Segurança

Este documento fornece informações sobre senhas, autenticação, configuração de SSL, segregação de rede, comunicações criptografadas, cabeçalhos HTTP e o protocolo TLS do servidor web relacionado com o cliente da WhatsApp Business API.

Senhas e autenticação

Consulte a documentação de Login e autenticação para mais informações sobre tokens de autenticação e boas práticas para senhas.

Configurações de SSL

O acesso ao cliente da WhatsApp Business API exige HTTPS.

O cliente da WhatsApp Business API gera um certificado autoassinado por padrão no momento da criação. O certificado da Autoridade de Certificação (CA, pelas iniciais em inglês) usado na geração do certificado autoassinado pode ser exigido para confirmar o ponto de extremidade do cliente da WhatsApp Business API e evitar um aviso de confiança do certificado. Como opção, você pode carregar o certificado da CA ao invés do autoassinado. Consulte a documentação de Certificados da CA para mais informações.

Como os webhooks também exigem HTTPS para retorno de chamada, você pode usar os próprios certificados da CA para evitar que o aplicativo encontre erros de SSL ao tentar POST para o webhook configurado. Consulte a documentação de certificados da CA do Webhooks para mais informações.

Segregação de rede

Recomendamos a hospedagem dos nós Webapp e Coreapp em redes separadas e segregadas, além de os expor apenas aos serviços necessários.

O nó Webapp deve expor a API e os pontos de extremidade da administração da web apenas às redes em que os clientes da WhatsApp Business API e as estações de trabalho da equipe de gerenciamento estão hospedados.

Os nós Coreapp devem expor somente os serviços de comunicação aos nós Webapp e, em uma configuração Multiconnect, expor somente o serviço de controle a outros nós Coreapp.

Comunicações criptografadas

Comunicação Webapp para Coreapp

Recomendamos a definição da variável de ambiente WA_SECRET nos contêineres Coreapp e Webapp, a fim de garantir que as comunicações entre eles sejam criptografadas.

Observação: os hosts Coreapp e Webapp precisam ter os relógios sincronizados para que a criptografia funcione perfeitamente. Caso contrário, a proteção de reprodução (ou seja, uma verificação do registro de data e hora com 10 segundos de tolerância) pode resultar em falha de comunicação.

Comunicação da base de dados

Você pode configurar parâmetros de SSL usados para criptografar a conexão à base de dados para proteger os dados em trânsito.

Antes, era possível usar a variável de ambiente WA_DB_CONNECTION_OPTION para criptografar somente a conexão do Coreapp para a base de dados, pois tradicionalmente apenas o Coreapp tinha acesso à base de dados. No entanto, o contêiner Webapp também acessa a base de dados, por isso é importante criptografar a conexão do Webapp à base de dados. Para isso, a configuração de SSL é alterada para torná-la neutra ao acesso de todos os contêineres. A criptografia pode ser configurada usando as seguintes variáveis de ambiente:

  • WA_DB_SSL_KEY
  • WA_DB_SSL_CERT
  • WA_DB_SSL_CA
  • WA_DB_SSL_VERIFY

WA_DB_SSL_VERIFY pode ser configurada para confirmar a identidade do servidor. Isso é exigido em determinadas configurações de desenvolvimento interno e é altamente recomendado que você não desabilite a verificação. Se esse parâmetro não estiver definido, a verificação será ativada por padrão. Para desabilitar a verificação, use:

WA_DB_SSL_VERIFY=0

Observação:WA_DB_SSL_VERIFYsomente é aplicável ao Webapp.

Para compatibilidade retroativa, WA_DB_CONNECTION_OPTION continuará a ser compatível em modo descontinuado e usado para criptografar a conexão do Coreapp à base de dados. É altamente recomendado que você mude para os novos parâmetros.

Todos os arquivos configurados nas variáveis de ambiente Key, Cert e CA devem estar acessíveis dentro do contêiner. Para isso, você pode criar um diretório certs sob o volume de dados com as permissões adequadas. O volume de dados é tipicamente montado como /usr/local/waent/data e o diretório do certificado seria então acessível em /usr/local/waent/data/certs dentro do contêiner.

Servidor web (TLS)

As cifras e o protocolo TLS foram configurados de acordo com as configurações recomendadas do Mozilla. O Webapp é compatível com três perfis: MODERNO (padrão), INTERMEDIÁRIO e ANTIGO.

Recomendamos que você mantenha a configuração padrão para ter mais segurança. No entanto, é possível optar pelo downgrade do seu perfil usando a variável de ambiente WA_WEB_SECURITY_LEVEL.

Cabeçalhos HTTP

Os seguintes cabeçalhos HTTP são compatíveis com a administração da web, mas não com os pontos de extremidade da API, e estão sujeitos ao navegador em uso.

NomeDescrição

X-Content-Security-policy

Define a política que permite que somente os scripts do mesmo domínio sejam executados na administração da web.

X-Frame-Options

O cabeçalho não permite que um domínio inclua a página de administração da web como um iframe.

X-XSS

Um cabeçalho de proteção que protege a página de administração da web contra ataques de scripts entre sites ao higienizar as entradas quando um ataque é detectado.

X-Content-Type-Options

Garante que o tipo de conteúdo recebido pelo servidor é o mesmo que o solicitado por ele.

Strict-Transport-Security

Garante que a administração da web só possa ser acessada por meio de HTTPS.