# Magic Links

### Qualidade do Token

* Verificar se o token é criptograficamente aleatório (deve ter ≥ 128 bits de entropia)
* Verificar se o token segue algum padrão previsível (timestamp + userId, hash MD5 do e-mail)
* Analisar múltiplos tokens gerados, há correlação entre eles?

### Validade e Uso

* Testar se o magic link pode ser usado mais de uma vez
* Testar se o magic link funciona após logout do usuário
* Verificar tempo de validade, ideal entre 5 e 15 minutos
* Testar validade após mudança de fuso horário ou manipulação do relógio
* Verificar se o link funciona via HTTP (deveria ser HTTPS apenas)

### Enumeração e Leakage

* Troca de parâmetros no link (`user_id`,`email`,`account_id`) — acesso de outro usuário
* Enumeração de usuários na geração do link, resposta diferente para e-mail inexistente
* Enumeração por tempo de resposta (timing attack na geração)
* Token aparece na URL, fica exposto em logs do servidor, Referer headers e histórico do browser
* Token aparece no header`Referer`ao navegar para outro site após o login

### Rate Limiting

* Rate limit na geração do link, possível flood de e-mails
* Geração em massa causa DoS por e-mail na caixa do usuário

{% hint style="info" %}
Ao encontrar token de uso múltiplo ou sem expiração, demonstre o impacto: gere um link, use uma vez, use novamente 30 minutos depois. O screenshot da segunda autenticação bem-sucedida é evidência suficiente.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://handbook.vantico.com.br/metodologias/web/contextos-especificos/magic-links.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
