
A resposta curta (para programadores): um código enviado por SMS só é tão seguro como o código que o rodeia. As regras: gerar o código com um gerador aleatório seguro, guardar só um hash dele, com validade curta, limite de tentativas e uso único; limitar quantos SMS cada número e cada IP pode pedir; e nunca escrever o código em registos, endereços ou ferramentas de análise. E lembre-se de que o próprio SMS pode ser lido no ecrã bloqueado ou desviado com a troca do cartão SIM: nas contas que importam, ofereça também uma app de autenticação (app de autenticação, SMS ou chave).
Os riscos e as defesas
| Risco | Defesa |
| Adivinhar o código à força de tentativas | Limite de tentativas por código; depois disso, o código deixa de valer. Comparação com hash_equals. |
| Um código que continua válido horas depois | Validade curta, uso único, e um código novo anula o anterior. |
| Usarem o seu formulário para disparar SMS em massa (tráfego inflacionado para números que dão lucro a quem engana) | Limites por número, por IP e por sessão; captcha antes de enviar; só os países que serve; alarme quando o volume foge do normal. |
| O código aparece nos registos ou na monitorização | Registe «código enviado para o número terminado em…», nunca o código. Reveja o modo de depuração do cliente HTTP e as ferramentas que guardam o corpo dos pedidos. |
| Um código pedido para uma coisa usado para outra | Ligue o código ao utilizador, à finalidade (entrar, mudar a palavra-passe, confirmar um pagamento) e à sessão. |
| Um código previsível | random_int, que usa o gerador seguro do sistema. Nunca rand(), mt_rand() nem nada derivado da hora. |
Como fazer, passo a passo (PHP)
|
|
|
|
|
|
| Nunca devolva o código ao navegador «para facilitar os testes», nem deixe um código fixo de teste activo em produção. São dois erros clássicos, e qualquer um deles anula a verificação inteira. |
| Muitos fornecedores de SMS têm uma API própria de verificação, que gera, envia e confere o código e trata de parte dos limites. Usá-la passa parte deste trabalho para eles; leia o que guardam e durante quanto tempo. E não espere pelo relatório de entrega para deixar o utilizador avançar: relatórios de entrega (DLR). |
|
Quer limitar os pedidos ao formulário do código ao nível do servidor, no seu VPS? Abra um pedido e diga-nos o endereço do formulário. Abrir pedido de suporte |
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão) Ver planos |











