SMS OTP/2FA para SaaS: Login Seguro com Código Único (Configuração para PME)

Um código de 6 dígitos enviado por SMS — simples, mas eficaz. A autenticação de dois fatores via SMS é o standard mais amplamente utilizado para logins seguros e autorização de pagamentos. Este artigo mostra como as PME configuram 2FA por SMS, quando o WhatsApp é mais eficiente e como funciona o failover automático.

TL;DR

O SMS OTP é o standard mais amplamente utilizado para a autenticação de dois fatores: taxa de entrega de 97-99% nas rotas premium, latência de 5-15 segundos, compatível com qualquer telemóvel. O WhatsApp Authentication pode ser mais barato a partir de cerca de 500 logins por dia, mas requer que o utilizador tenha o WhatsApp instalado. Uma lógica de failover combina o melhor dos dois canais. Este artigo mostra como implementar o 2FA por SMS de forma tecnicamente correta — com base legal (Art. 6.º n.º 1 al. b) RGPD) e boas práticas de segurança.

Como funciona o SMS OTP

Um OTP (One-Time Password, palavra-passe de uso único) é um código temporário que é válido apenas por um breve período e para uma única ação. O processo no login:

  1. O utilizador introduz nome de utilizador e palavra-passe.
  2. O sistema gera um código OTP de 6 dígitos com validade de 5-10 minutos.
  3. O código é enviado por SMS para o número de telemóvel registado do utilizador.
  4. O utilizador introduz o código — apenas então o login é bem-sucedido.

Este segundo fator protege contra o roubo de palavras-passe: mesmo que alguém tenha a palavra-passe, não consegue fazer login sem o código do telemóvel. Por isso a autenticação de dois fatores é recomendada para todas as áreas de cliente, portais de pagamento e ferramentas de gestão.

Para as empresas, isso significa: um SMS A2P automatizado é enviado para cada tentativa de login — transacional, sem opt-in de marketing necessário, e com base legal clara através do Art. 6.º n.º 1 al. b) RGPD (execução do contrato).

Taxa de entrega e latência: o que esperar

O 2FA por SMS só funciona se o código chegar rápida e previsivelmente. A SendSeven envia mensagens OTP através de rotas premium da UE, com os seguintes valores típicos:

  • Taxa de entrega: 97-99% nas rotas premium da UE
  • Latência: 5-15 segundos para a maioria dos destinatários na Europa
  • Pico de entrega: menos de 30 segundos em mais de 95% dos casos

Um código que só chega após 3 minutos torna o 2FA inutilizável na prática. É por isso que a qualidade das rotas é um critério decisivo na escolha do fornecedor. As rotas premium encaminham diretamente através dos operadores de rede, sem intermediários adicionais que possam causar atrasos.

Fatores que podem influenciar a entrega:

  • Congestionamento de rede em horários de pico
  • Cobertura do operador na região do destinatário
  • Roaming internacional (para utilizadores no estrangeiro)
  • Número de telemóvel incompleto ou desatualizado na conta do utilizador

Boas práticas de segurança para códigos OTP

Um SMS OTP é tão seguro quanto a sua implementação. As boas práticas técnicas mais importantes:

  • Comprimento do código: 6 dígitos. 4 dígitos são demasiado fáceis de adivinhar por força bruta; 8 dígitos prejudicam a usabilidade. 6 dígitos é o equilíbrio adequado.
  • Validade: 5-10 minutos. Curto o suficiente para reduzir a janela de ataque, longo o suficiente para que o utilizador consiga introduzir o código.
  • Bloquear após 3-5 tentativas falhadas. Sem limite de tentativas, os codes de 6 dígitos podem ser adivinhados em poucos minutos.
  • Cada código válido apenas uma vez. Após utilização bem-sucedida, o código é imediatamente invalidado.
  • Sem link de login no SMS OTP. «Clique aqui para fazer login» em mensagens OTP é um vetor de phishing clássico. O SMS deve conter apenas o código, nunca um link de autenticação.
  • Nenhum dado sensível no texto SMS. O texto da mensagem não deve conter nome, endereço de email ou outros dados — apenas o código e o nome da empresa.

Os SMS OTP são mensagens transacionais que servem a execução de um contrato. Por isso não precisam de um opt-in de marketing separado. A base legal ao abrigo do RGPD é o Art. 6.º n.º 1 al. b) RGPD (execução do contrato ou de diligências pré-contratuais).

Isso significa: quando um utilizador cria uma conta num portal SaaS e confirma o seu número de telemóvel para o 2FA, o envio de OTP para logins é permitido, pois faz parte do serviço contratado. Um consentimento de marketing separado não é necessário para isto.

O que é necessário:

  • Informação clara na política de privacidade sobre o envio de SMS para fins de 2FA
  • Tratamento dos dados em conformidade com o RGPD (servidor na UE, contrato de processamento de dados)
  • Não usar o número de telemóvel do utilizador para fins de marketing sem consentimento separado

A SendSeven processa dados em servidores na UE e disponibiliza um contrato de processamento de dados standard. A autoridade de proteção de dados em Portugal é a CNPD (Comissão Nacional de Proteção de Dados).

Custos: SMS vs. WhatsApp Authentication

Para volumes elevados, a comparação de custos entre SMS OTP e WhatsApp Authentication Templates torna-se relevante. O WhatsApp disponibiliza um tipo de template especialmente otimizado para autenticação, com custos de mensagem mais baixos do que os templates de marketing.

Estrutura de custos típica (valores orientativos para a Europa):

Comparação de custos entre SMS OTP e WhatsApp Authentication por mensagem, requisitos e caso de uso adequado
Canal Custo por mensagem (orientativo) Nota
SMS OTP ca. 0,05-0,15 € Consoante país de destino e rota
WhatsApp Authentication ca. 0,05-0,07 € Apenas para utilizadores com WhatsApp instalado

O WhatsApp Authentication pode ser mais económico por mensagem. A desvantagem: não chega a utilizadores sem WhatsApp. O SMS funciona em qualquer telemóvel. A partir de cerca de 500 logins por dia, uma mudança para WhatsApp como canal primário começa a compensar — com SMS como fallback para utilizadores sem WhatsApp. Esta estratégia híbrida está explicada na secção seguinte.

Failover: quando o SMS falha, o WhatsApp assume

Uma arquitetura de autenticação robusta não depende de um único canal. O padrão de failover recomendado para OTP:

  1. Canal primário: WhatsApp (para utilizadores com WhatsApp instalado, como canal mais económico)
  2. Fallback para SMS se a entrega via WhatsApp falhar

Como funciona tecnicamente:

  1. O backend envia o OTP via WhatsApp Authentication Template através da API da SendSeven.
  2. A SendSeven devolve um webhook de estado de entrega.
  3. Se o estado for «entregue»: processo concluído.
  4. Se o estado for «falhou» ou se não houver resposta em 30 segundos: o backend envia o OTP por SMS como fallback.

Esta lógica é implementada do lado do backend — a SendSeven disponibiliza os webhooks de estado para ambos os canais. A taxa de entrega combinada com esta estratégia aproxima-se de praticamente 100% para utilizadores europeus.

Nota importante sobre os triggers: a lógica de failover é controlada pelo seu backend. A SendSeven não tem um trigger de inbound-webhook automático que reconheça falhas e reencaminhe automaticamente. O seu sistema escuta os webhooks de estado da SendSeven e decide quando enviar o SMS de fallback.

Implementação técnica com a API da SendSeven

O envio de SMS OTP via SendSeven é feito através da API REST. O fluxo básico para o 2FA por SMS:

POST /api/v1/messages
{
  "channel": "sms",
  "to": "+351912345678",
  "text": "O seu código SendSeven: 847291. Válido por 5 minutos.",
  "type": "transactional"
}

O que é importante na implementação:

  • Tipo «transactional». Marca o SMS como mensagem transacional, não como campanha de marketing. Isto influencia o encaminhamento e a prioridade.
  • Texto da mensagem. Manter curto: nome da empresa, código, validade. Sem links, sem dados adicionais.
  • Webhook de estado. Registar um webhook endpoint para receber confirmações de entrega. Necessário para a lógica de failover.
  • Rate limiting do lado do servidor. Limitar o número de OTP enviados por número de telemóvel por unidade de tempo para prevenir abusos.

A documentação técnica e exemplos de código estão disponíveis na documentação da API da SendSeven.

Perguntas frequentes

Preciso de opt-in de marketing para o SMS OTP?

Não. Os SMS OTP são mensagens transacionais ligadas à execução do contrato (Art. 6.º n.º 1 al. b) RGPD). Quando um utilizador confirma o seu número de telemóvel para o 2FA, isso é suficiente como base legal. Não é necessário um consentimento de marketing separado.

Qual é a taxa de entrega do SMS OTP?

Nas rotas premium da UE, a taxa de entrega de SMS OTP situa-se em 97-99%. A latência típica é de 5-15 segundos. Com uma estratégia de failover que usa SMS e WhatsApp, a taxa de entrega combinada aproxima-se de praticamente 100%.

Por que é que o WhatsApp Authentication é mais barato do que o SMS?

O WhatsApp disponibiliza authentication templates com taxas de mensagem mais baixas do que os templates de marketing. Para volumes elevados a partir de cerca de 500 logins por dia, a troca para WhatsApp como canal primário com SMS como fallback pode reduzir os custos em cerca de 30-45%.

Como funciona o failover de OTP entre WhatsApp e SMS?

O backend envia o OTP primeiramente via WhatsApp. Se o webhook de estado da SendSeven devolver «falhou» ou se não houver resposta em 30 segundos, o backend envia o OTP de novo por SMS. A lógica de failover corre do lado do backend, a SendSeven disponibiliza os webhooks de estado necessários.

Quantos dígitos deve ter um código OTP para ser seguro?

6 dígitos é o comprimento recomendado: suficientemente longo para ser seguro contra ataques de força bruta, suficientemente curto para ser introduzido rapidamente pelo utilizador. Adicionalmente, o número de tentativas deve ser limitado a 3-5 antes de bloquear a sessão.

Por quanto tempo deve ser válido um código OTP?

Recomenda-se uma validade de 5-10 minutos. Mais curto cria pressão desnecessária para utilizadores mais lentos; mais longo alarga a janela de ataque se o código for intercetado.

Os dados de telemóvel dos utilizadores estão seguros com a SendSeven?

Sim. A SendSeven processa dados em servidores na UE, disponibiliza um contrato de processamento de dados (DPA) e opera em conformidade com o RGPD. A autoridade de proteção de dados em Portugal é a CNPD.

Posso usar o mesmo número de telemóvel para 2FA e SMS Marketing?

Tecnicamente sim, mas juridicamente requer bases legais separadas. O número de telemóvel confirmar para 2FA não pode ser utilizado para mensagens de marketing sem consentimento explícito separado. Manter estritamente separados os opt-ins de marketing dos registos 2FA.

Conclusão

O SMS OTP é o standard mais amplamente comprovado para a autenticação de dois fatores. Com 97-99% de taxa de entrega, latência de 5-15 segundos e base legal clara (Art. 6.º n.º 1 al. b) RGPD), é a solução certa para logins seguros em SaaS, portais e aplicações.

Para volumes elevados, uma combinação de WhatsApp Authentication como canal primário e SMS como fallback oferece o melhor equilíbrio entre custo e alcance. A lógica de failover é controlada do lado do backend usando os webhooks de estado da SendSeven — nenhuma magia de encaminhamento automático, mas controlo total.

Artigos relacionados: