[Cascavel-pm] HTTP_REFERER - variável de ambiente não funciona no protocolo https

Silvio Almeida scvalmei em graaph.arq.br
Quinta Maio 15 12:44:21 PDT 2008


Éden,

Claro, você tem toda razão, percebi meu erro logo em seguida, o 
Http-Referer trata de sequencia de URL acessadas, e não do ponto de 
origem dos acessos.

Na verdade não vai ter jeito, porque se a página https://xyz/index.html 
supostamente gera conteúdo (links no caso) em função de um header que 
além de não ser confiável pode nem sequer existir, então o problema não 
tem solução.

A alternativa de webservice que você mencionou, ou o esquema de token 
que o Nilson descreveu, são bastante parecidos na medida em que os sites 
"licenciados" devem aderir a um esquema particular de comunicação com o 
servidor https://xyz, ou seja, um "protocolo" ou "contrato particular de 
referenciação". Este "protocolo" (não sei se devia botar aspas) pode 
implementar qualquer grau de segurança, basta querer e podemos ter 
chaves triplas DSA-RGB 10024 bits por pixel.

A característica mais interessante aqui é que tanto em um caso (Éden) 
como em outro (Nilson) a implementação necessariamente acontece nos dois 
extremos da linha, isto é, cada página "licenciada" precisa implementar 
sua parte do protocolo para poder falar com https://xyz.

O que não acontece na solução que depende apenas do Http-Referer, onde 
somente https://xyz cuidaria de manter a lista de sites "licenciados". 
De certa forma, o navegador implementa a sua metade de um esquema 
simplório: ele envia a URL atual no próximo request sob o header 
Http-Referer. O que, em termos de segurança, não serve para nada.

-Silvio


Eden Cardim wrote:
> 2008/5/15 Silvio Almeida <scvalmei em graaph.arq.br>:
>   
>> Acessando $ENV{REMOTE_ADDRESS} a partir do CGI você obtém o IP que fez o
>> request. Esta informação é totalmente confiável pois não vem de um
>> header HTTP (forjável por natureza), mas de uma camada Ozzy inferior. Aí
>> no CGI você poderia testar o REMOTE_ADDRESS para determinados ranges
>> para liberar ou não acesso. Isto não funcionaria?
>>     
>
> Ele quer bloquear a navegação a partir de links contidos em outros
> websites, não o usuário do user agent


Mais detalhes sobre a lista de discussão Cascavel-pm