Open Redirect - Vulnerabilidade de redirecionamento aberto \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 11 Horas 

 31 Min 

 21 Seg 

   Tempo restante da oferta: 11 31 21 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Open Redirect - Vulnerabilidade de redirecionamento aberto  [ Segurança da Informação ](https://www.treinaweb.com.br/blog/categoria/seguranca-da-informacao) 

# Open Redirect - Vulnerabilidade de redirecionamento aberto

 Saiba o que é a vulnerabilidade de redirecionamento aberto (Open Redirect) e ações que podem ser desempenhadas para mitigá-la.

 [ Kennedy Tedesco ](https://www.treinaweb.com.br/blog/autor/kennedy-tedesco) 8 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/07/31174205/vulnerabilidade-redirecionamento.png)  

Dando sequência aos artigos sobre segurança de aplicações web, no último artigo eu falei sobre [Cross-Site Request Forgery (CSRF) e abordagens para mitigá-lo](https://www.treinaweb.com.br/blog/cross-site-request-forgery-csrf-e-abordagens-para-mitiga-lo/ "Cross-Site Request Forgery (CSRF) e abordagens para mitigá-lo").

Hoje veremos sobre “Open Redirect Vulnerabilities”, que a OWASP define como “Unvalidated Redirects and Forwards”, que basicamente é um ataque que explora redirecionamentos arbitrários que acontecem a partir da interação dos usuários.

Vamos supor que você é usuário de uma corretora de criptomoedas que responde ao endereço `mytestexchange.com`. E, navegando pelo twitter, você viu um tweet que parecia ser do perfil oficial dela sobre alguma nova moeda que foi incluída na plataforma:

![Tweet exemplo](https://dkrn4sk0rn31v.cloudfront.net/2018/07/27173458/fake-tweet-2.png)

A URL do link é:

```
https://mytestexchange.com/login?next=https://mytestexchange1.com/new

```

Observe também que o perfil de quem postou o tweet é `@mytestexchange1` e não `@mytestexchange` que seria o oficial da corretora.

Aparentemente, tudo correto. Na página de login você entrará com os seus dados e, depois de logado, será redirecionado para a URL que se encontra no parâmetro `next`.

O problema aqui é que essa URL do parâmetro `next` é um site arbitrário que não condiz com o da sua corretora. É possível que ele seja praticamente um clone do site da sua corretora. Um clássico ataque de phishing. Como também é muito possível que ele pedirá pra você informar os dados da sua conta com o falso pretexto de mantê-la protegida, mas com a escusa intenção de roubá-los.

Esse cenário pode parecer *nonsense*, não praticável etc, mas, acredite, acontece com muita frequência, principalmente com usuários com menos malícia em verificar a URL ou o site que se está acessando após algum redirecionamento. Muitas recompensas já foram pagas (*bug bounty program*) para vulnerabilidades desse tipo e muitas delas foram encontradas em grandes sites e plataformas de ecommerce, pois *open redirect* é algo comum em aplicações web.

## De quem é e onde está o problema?

Veja que no cenário acima o ataque utilizou-se de uma vulnerabilidade do site da corretora que aceita a manipulação da URL de redirecionamento para qualquer outro domínio que não o dela. A responsabilidade aqui é do site da coretora. Não podemos pressupor que o cliente (usuário) seguirá todos os caminhos seguros possíveis ao interagir com as nossas aplicações.

Vamos transportar para um código genérico o que possivelmente o site da corretora faz:

**Nota:** O exemplo aqui é em [PHP](https://www.treinaweb.com.br/blog/o-que-e-php/ "O que é PHP?") (minha linguagem favorita), mas o paralelo pode ser feito com qualquer outra linguagem e/ou qualquer [framework](https://www.treinaweb.com.br/blog/para-que-serve-um-framework/ "framework") web.

```php
