Glossário
O que é open redirect — sua URL confiável usada como trampolim para outro site
Um open redirect permite que uma URL do seu site encaminhe visitantes para qualquer site externo, então seu domínio confiável vira trampolim para phishing. Como funciona e a defesa real (allowlist de destinos, nunca aceitar URLs externas) — explicado de forma defensiva, sem passos de ataque.
"O início da URL era meu domínio real, mas clicar nela me levou a um site completamente diferente" — isso é um open redirect. Veja como funciona e como evitá-lo de forma confiável (sem passos de ataque).
Por que é perigoso
O dano central é a confiança emprestada do seu domínio.
| Como é abusado | O que acontece |
|---|---|
| Trampolim de phishing | O link começa com o domínio real → usuários e filtros confiam → vão para um site falso |
| Sequestro de fluxo de autenticação | Adulteração do destino de redirecionamento em fluxos do tipo OAuth para capturar um token/código |
| Amplificação de outras falhas | Combinado com SSRF ou XSS para ampliar o impacto |
Por que funciona
Aparece em recursos como "levar o usuário de volta para onde estava após o login", onde a URL de retorno é confiada e encaminhada como está. O "início" da URL que o usuário vê é o domínio real, então é difícil desconfiar dela do começo ao fim.
Defesa: não aceite URLs externas
Permita apenas caminhos relativos (o mais importante)
Aceite destinos de retorno como /dashboard — apenas caminhos relativos — e rejeite URLs completas (que começam com http:// ou //). Não dê espaço para o usuário especificar um domínio de destino.
Compare com uma allowlist
Se você precisar de destinos dinâmicos, permita apenas entradas de um conjunto fixo de destinos conhecidos (um mapa). Qualquer outra coisa recai em uma página padrão.
Não confie em verificações de string
//evil, barras invertidas, @ e codificação múltipla contornam filtros ingênuos. Mude o que você aceita (relativo + allowlist) em vez de remendar filtros.
Se precisar sair do site, deixe explícito
Quando redirecionamentos externos forem intencionais, exiba uma página intermediária ("Você está saindo para um site externo"). Não encaminhe silenciosamente.
A visão deste site: 'baixo' sozinho, mas potente junto com phishing
Open redirects costumam ser classificados como baixo risco por si só, mas como emprestam a confiança do seu domínio, tornam-se potentes combinados com phishing ou sequestro de autenticação. Por isso uma medida em nível de projeto — caminhos relativos + allowlist — elimina a raiz com eficiência. Espelha o SSRF (fazer o servidor se conectar a qualquer lugar): ambos compartilham o princípio de defesa de nunca deixar o usuário decidir o destino.
Leia a seguir
- Glossário: O que é SSRF · O que é XSS
- Fundamentos: Fundamentos de segurança
FAQ
QPor que um open redirect é um problema?
O primeiro domínio da URL é o seu domínio real e confiável (por exemplo, uma página de login), então usuários e filtros de e-mail clicam nele com confiança. Mas o site os encaminha para qualquer site externo, então seu domínio real vira trampolim para phishing e ponto de apoio para roubar tokens em fluxos de autenticação.
QQual é a principal defesa?
Não aceite URLs externas como destino de redirecionamento. Para caminhos de retorno após o login, permita apenas caminhos relativos (/dashboard) e compare com uma allowlist (um conjunto fixo de destinos conhecidos). Se você realmente precisar enviar usuários para fora do site, exiba uma página intermediária avisando que estão saindo.
QVerificar por http:// é suficiente?
Não. Formas sem esquema (//evil.example), barras invertidas, codificação e URLs confusas com @ contornam verificações ingênuas. Em vez de julgar a string, projete o sistema para nunca aceitar uma URL externa (caminhos relativos + allowlist).