Em que casos o HTTP_REFERER estará vazio

163

Eu sei que é possível obter um HTTP_REFERER vazio. Sob que circunstâncias isso acontece? Se eu receber um vazio, isso sempre significa que o usuário o alterou? Obter um vazio é o mesmo que obter um nulo? e em que circunstâncias eu também entendo isso?

o mesmo de sempre
fonte
8
Quando o cliente não envia um.
Ignacio Vazquez-Abrams

Respostas:

276

Será / pode estar vazio quando o usuário final

  • inseriu o URL do site na própria barra de endereço do navegador.
  • visitou o site por um marcador mantido pelo navegador.
  • visitou o site como primeira página na janela / guia.
  • clicou em um link em um aplicativo externo.
  • mudou de um URL https para um URL http.
  • mudou de um URL https para um URL https diferente.
  • possui um software de segurança instalado (antivírus / firewall / etc) que retira o referenciador de todas as solicitações.
  • está atrás de um proxy que retira o referenciador de todos os pedidos.
  • visitou o site programaticamente (como curl ) sem definir o cabeçalho do referenciador (robôs de pesquisa!).
BalusC
fonte
32
Convém adicionar "quando o usuário fizer a transição de uma página segura (HTTPS) para uma página não segura".
John Escolha
4
"visitou o site como primeira página na janela / guia." Mesmo que fosse clicando em um link e abrindo-o em uma nova janela / guia? Você tem certeza? Isso seria um comportamento muito errado do navegador
Matteo
Veja também aqui stackoverflow.com/questions/21922143/… para exceções a isto
GetFree
4
"alternou de um URL https para um URL https diferente". Você tem certeza disso? : \
Oscar Mederos
5
Por padrão, alternar de um URL HTTPS para um URL HTTPS diferente define o referenciador completo. Esta política padrão pode, no entanto, ser substituída. w3.org/TR/referrer-policy
Dhaval Kapil
34

HTTP_REFERER - enviado pelo navegador, informando a última página que o navegador visualizou!

Se você confia em [HTTP_REFERER] por algum motivo importante, não deve, pois pode ser falsificado facilmente:

  1. Alguns navegadores limitam o acesso para não permitir a passagem de HTTP_REFERER
  2. Digite um endereço na barra de endereços que não passará o HTTP_REFERER
  3. abrir uma nova janela do navegador não passará o HTTP_REFERER, porque HTTP_REFERER = NULL
  4. possui algum complemento de navegador que o bloqueia por motivos de privacidade. Alguns firewalls e AVs fazem isso.

Experimente esta extensão do Firefox, você poderá definir os cabeçalhos que desejar:

@ Mestre da Celebração:

Raposa de fogo:

extensões: refspoof , refontrol , modificar cabeçalhos , sem referência

Desativar completamente: a opção está disponível em about: config em "network.http.sendRefererHeader" e você deseja definir isso como 0 para desativar a passagem do referenciador.

Google chrome / Chromium:

extensões: noref , spoofy , noreferrer externo

Desative completamente: Chnage ~ / .config / google-chrome / Default / Preferences ou ~ / .config / chromium / Default / Preferences e defina isto:

{
   ...
   "enable_referrers": false,
   ...
}

Ou simplesmente adicione --no-referrers ao atalho ou no cli:

google-chrome --no-referrers

Ópera:

Desative completamente: Configurações> Preferências> Avançado> Rede e desmarque "Enviar informações do referenciador"

Serviço Web falsificado:

http://referer.us/

Proxy de filtragem independente (falsifique qualquer cabeçalho):

Privoxy

Falsificação de http_referer ao usar wget

'--referer = url'

Falsificação de http_referer ao usar curl

-e, --referer

Spoofing http_referer com telnet

telnet www.yoursite.com 80 (press return)
GET /index.html HTTP/1.0 (press return)
Referer: http://www.hah-hah.com (press return)
(press return again)
Aquele cara
fonte
O Tamper Data é outra extensão do Firefox que vale a pena dar uma olhada se você quiser brincar com a alteração dos valores do referenciador.
31411 Chris Hepner
Eu estava tentando muito lembrar o nome. mas minha memória me traiu. Obrigado :)
ThatGuy
@nix Some browsers limit access to not allow HTTP_REFERER to be passedVocê poderia citar um exemplo para esse navegador e / ou extensão?
Master of Celebration
O @MasterofCelebration adicionou maneiras de falsificar http_referer na minha resposta.
ThatGuy
Não use o referer.us para falsificar / ocultar o seu referenciador! Não funciona e vaza suas informações. O único serviço em funcionamento no momento é esse serviço gratuito de referência de ocultos .
Brian Smith
9

A lista do BalusC é sólida. Uma maneira adicional pela qual esse campo freqüentemente aparece vazio é quando o usuário está atrás de um servidor proxy. Isso é semelhante a estar atrás de um firewall, mas é um pouco diferente, então eu queria mencioná-lo por uma questão de integridade.

Coruja noturna
fonte
8

Também ficará vazio se o novo rascunho padrão da Política de Referenciadores for usado para impedir que o cabeçalho do referenciador seja enviado para a origem da solicitação. Exemplo:

<meta name="referrer" content="none">

Embora o Chrome e o Firefox já tenham implementado uma versão preliminar da Política de referência, você deve ter cuidado com ela, porque, por exemplo, o Chrome espera em no-referrervez de none(e eu também vi em neveralgum lugar).

Joel Richard
fonte
tabela de compatibilidade do navegador: developer.mozilla.org/pt-BR/docs/Web/HTTP/Headers/…
djvg
0

Eu achei a implementação do referenciador do navegador muito inconsistente.

Por exemplo, um elemento âncora com o atributo "download" funciona conforme o esperado no Safari e envia o referenciador, mas no Chrome o referenciador estará vazio ou "-" nos logs do servidor web.

<a href="http://foo.com/foo" download="bar">click to download</a>

Está quebrado no Chrome - nenhum remetente enviado.

jmoz
fonte