Como Fazer um Redirecionamento PHP (Com Segurança)

Como Fazer um Redirecionamento PHP (Com Segurança)

Um Redirecionamentos PHP é uma ferramenta incrivelmente útil, mas que também pode ser perigoso se não for implementado do jeito certo.

Se você já passou pela nossa introdução ao PHP 7.4 e nosso guia de como criar um site, já está ciente que a função header() pode ser usada para redirecionar facilmente um usuário de uma página para outra.

Na verdade, porém, usar essa função não é tão simples quanto parece. Neste guia, vamos mostrar como fazer um redirecionamento PHP que não cause problemas no futuro.

O Método Básico Para Fazer Um Redirecionamento PHP

A maioria dos guias lhe dirá que, para fazer um redirecionamento PHP, você pode simplesmente usar a função header() na parte superior das suas páginas. Para fazer isso, você usa a função para enviar uma nova URL, assim: 

header('Location: '.$newURL.php);

Essa função de cabeçalho deve ser colocada antes de você passar qualquer HTML ou texto para os navegadores dos usuários. Por isso, deve estar no topo da página. Isso significa que ele deve vir antes da declaração <!DOCTYPE>, antes de qualquer código Java e PHP. Em seguida, ele envia os usuários para a nova URL. 

Embora possa parecer simples, quando se trata da função header(), a simplicidade do código pode causar uma falsa sensação de segurança. Então, vamos ver como você pode usar essa função corretamente.

Die() e Exit ()

Primeiro, você deve usar os modificadores die() ou exit() toda vez que usar um redirecionamento. Em resumo, o problema é que os rastreadores e robôs podem ignorar os cabeçalho e, então, a página que você estava redirecionando é totalmente acessível a eles.

Se, em outras palavras, você está usando um redirecionamento de cabeçalho para proteger uma página em particular, ela não oferece proteção nenhuma.

É por isso que você precisa desligar o redirecionamento se ele for ignorado. A maneira de fazer isso é anexar die() ou exit() após o seu redirecionamento:

header("Location: .$newURL.php");

die();

URLs Relativas e Absolutas 

Em seguida, vamos falar sobre URLs relativas e absolutas nos redirecionamentos. O RFC 7231 permite usar os dois, mas você deve ser extremamente cuidadoso ao usar redirecionamentos relativos. Isso acontece porque alguns criadores de sites coletam e renomeiam páginas PHP.

Isso significa que, se você estiver trabalhando no seu PHP por meio de um criador de sites, poderá acabar quebrando todos os seus redirecionamentos

Infelizmente, no momento não há uma maneira real de contornar esse problema, além de ser cuidadoso sobre onde seus redirecionamentos estão apontando.

Códigos de Statis

O terceiro problema com os redirecionamentos padrão do PHP é que o operador “local” do PHP ainda retorna o código HTTP 302 .

Você não deve aceitar isso, porque muitos navegadores da web implementam esse código de maneira totalmente contrária à maneira como ele deve funcionar: eles essencialmente usam o comando GET em vez de executar um redirecionamento “real”.

A melhor prática ao criar redirecionamentos PHP é, portanto, especificar o código que é retornado. Infelizmente, o código correto a ser usado é um ponto de discórdia.

O HTTP 301 indica um redirecionamento permanente, o que pode causar problemas ao restaurar sua página original. Infelizmente, o HTTP 303 é entendido como “outro” por muitos navegadores e pode causar problemas com a indexação da sua página pelos mecanismos de pesquisa.

Na prática, e até que tudo seja resolvido, use HTTP 303.

Verifique a Documentção 

Além de tomar as precauções básicas acima, reserve um tempo para ler a documentação sobre o uso de redirecionamentos PHP antes de publicá-los.

Você deve ler o manual do PHP para garantir que entende o que está fazendo, além de verificar a documentação do W3C para garantir que está seguindo as melhores práticas.

E enquanto você está fazendo suas leituras, lembre-se de proteger também o site contra vulnerabilidades comuns: se você já está em fase de ter que usar redirecionamentos PHP, é provável que a segurança do site precise de uma auditoria.

página inicial do Network Vulnerabilities List da Privacy Canada

Outros Métodos 

Considerando todos esses problemas, você provavelmente está se perguntando por que usaria um redirecionamento PHP.

Embora os redirecionamentos PHP normalmente sejam executados mais rapidamente do que outros tipos de redirecionamento e possam, portanto, ser uma ferramenta importante para melhorar a velocidade do site, existem outras opções disponíveis.

Existem duas abordagens principais para fazer isso. Você pode usar o elemento HTML <meta> para redirecionar de dentro da parte HTML da sua página ou usar JavaScript. A primeira abordagem – usando <meta> ficaria assim:

<meta http-equiv="refresh" content="0;url=newpage.php">

A segunda abordagem – usando JavaScript – é um pouco mais elegante e certamente parece mais profissional:

window.location.replace("http://newpage.php/");

Ambas as abordagens serão executadas um pouco mais lentamente que o redirecionamento imediato do header(), mas são sem dúvida mais flexíveis.

Palavra Final

Embora seguir as etapas acima signifique que os redirecionamentos do PHP sejam executados com segurança, se você estiver na posição de usar vários redirecionamentos do PHP, provavelmente é hora de repensar a estrutura do seu site.

Existem algumas boas razões para fazer isso. A primeira é que nem todos os hosts da web são criados da mesma forma e, se você estiver enviando todos os visitantes em uma rota tortuosa pelo site, isso afetará o desempenho.

Isso pode ser aprimorado até certo ponto, usando um provedor de hospedagem acessível, mas apenas até certo ponto.

O segundo motivo é que a página da qual você está redirecionando pode estar coletando dados sobre seus visitantes sem que você esteja ciente disso, principalmente se você estiver usando um software de análise da web para rastrear o desempenho do seu site. No nosso mundo pós-LGPD, isso pode ter consequências significativas.

Portanto, em resumo: tenha cuidado com os redirecionamentos do PHP, use de forma adequada e use somente onde e quando for absolutamente necessário.

 

Author
O autor

Ariane G.

A Ariane é SEO Team Leader com experiência em conteúdo, localização e SEO. Seu desafio é levar a Hostinger ao topo dos resultados no Brasil, França e Reino Unido. Eventualmente ela compartilha seu conhecimento no blog e nos tutoriais da Hostinger e no tempo livre ela gosta de explorar lugares novos e viver intencionalmente.