Pergunta

É possível verificar quem está entrando em seu site em PHP. Tenho uma aplicação web (escrito em PHP) que só deve permitir que os usuários de entrar de alguns sites específicos. É possível obter os sites de referência, examinando o objeto _Request? Se sim, como?

Foi útil?

Solução

Sim, mas tenha em mente alguns proxies e outras coisas tira esta informação, e pode ser facilmente forjado. Por isso, nunca confiar nele. Por exemplo, não acho que a sua aplicação web é seguro de CSRF porque você verificar o referrer para combinar com seu próprio servidor.

$referringSite = $_SERVER['HTTP_REFERER']; // is that spelt wrong in PHP ?

Se você quiser permitir apenas solicitações de um domínio específico que você precisa para analisar alguns dos URL para obter o domínio de nível superior. Como eu aprendi mais, isso pode ser feito com parse_url () do PHP.

Como Andyk pontos nos comentários, você também tem que permitir www.example.com e exemplo. com.

Outras dicas

Enquanto você pode olhar para $_SERVER['HTTP_REFERER'] para obter a sites de referência, não apostar a fazenda nela. O navegador define este cabeçalho e é facilmente falsificado.

Se é fundamental que apenas as pessoas que vêm de referências específicas ver o seu site, não use este método. Você terá que encontrar uma outra maneira, como autenticação básica, para proteger o seu conteúdo. Eu não estou dizendo que você não deve usar esta técnica, basta ter em mente que não é à prova de idiota.

BTW, você também pode bloquear referências ao nível de apache usando mod_rewrite .

Você não pode confiar a referência. Apesar de vir da matriz $_SERVER, é realmente a / navegador valor fornecido pelo usuário e é facilmente falsificado, usando coisas como o Firefox RefControl addon .

Você precisa examinar o array $ _SERVER para a chave 'HTTP_REFERER'.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top