Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

halfar

recuperar url - resultado nulo

Recommended Posts

utilizando $_SERVER[HTTP_REFERER]; para recuperar a origem de uma url, na maioria dos casos retorna valor nulo...

 

este codigo é realmente confiável, porque está retornando em branco?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem, não foi a falta do apostrofo que resolveu...

 

mas, pelo o que andei pesquisando, isto não é confiável...

 

tem alguma forma mais segura de saber esta origem da url?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem, não foi a falta do apostrofo que resolveu...

 

mas, pelo o que andei pesquisando, isto não é confiável...

 

tem alguma forma mais segura de saber esta origem da url?

 

Mesmo? Da uma olhada:

 

errophp.png

 

O erro é claro!!!

Não existe forma segura em nada se tratando de header's.

Podemos montar cabeçalhos da forma que bem quisermos e enviarmos aos servidores.

Se você quer validar um referer que seja somente do seu site então aí sim existe uma forma segura que é criar uma sessão na página que deve ser o referer e na página que recebe a requisição você faz a validação da sessão.

 

Este método é utilizado principalmente para evitar bruteforce.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo? Da uma olhada:

 

errophp.png

 

O erro é claro!!!

É tão claro que você mesmo não viu... o notice apenas avisa que o $_SERVER[HTTP_REFERER] vai ser tratado como $_SERVER['HTTP_REFERER']... ou seja, dá na mesma... óbvio que a melhor prática é utilizar o ' ' ou o " " (eu particularmente prefiro o ' ', por ter melhor desempenho), mas isso não está ligado ao problema em si.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É tão claro que você mesmo não viu... o notice apenas avisa que o $_SERVER[HTTP_REFERER] vai ser tratado como $_SERVER['HTTP_REFERER']... ou seja, dá na mesma... óbvio que a melhor prática é utilizar o ' ' ou o " " (eu particularmente prefiro o ' ', por ter melhor desempenho), mas isso não está ligado ao problema em si.

OK!! Programação a gambiarra é assim mesmo!!!

Em programação, não importa a mensagem de erro se é notice, warning, fatal error... tudo é erro e deve ser evitado... Se você ainda não aprendeu a não confiar nos interpretadores e compiladores, então você não entende do assunto...

 

E o php assumiu que HTTP_REFERER como 'HTTP_REFERER' é justamente pra evitar erros noobs.

 

Leia a documentação do PHP pra saber mais... Até lá está com apóstrofo mesmo estando apenas definindo cada chave.

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK!! Programação a gambiarra é assim mesmo!!!

Em programação, não importa a mensagem de erro se é notice, warning, fatal error... tudo é erro e deve ser evitado... Se você ainda não aprendeu a não confiar nos interpretadores e compiladores, então você não entende do assunto...

 

E o php assumiu que HTTP_REFERER como 'HTTP_REFERER' é justamente pra evitar erros noobs.

 

Leia a documentação do PHP pra saber mais... Até lá está com apóstrofo mesmo estando apenas definindo cada chave.

Desculpe, mas acredito que você não tenha conhecimento algum sobre a minha formação para me mandar ler o manual... inclusive acredito que você não tenha prestado atenção na parte em que falo "óbvio que a melhor prática é utilizar o ' ' ou o " " (eu particularmente prefiro o ' ', por ter melhor desempenho),", ademais, apenas citei que a sua informação não resolve a problema em questão, paro por aqui, pois já vi que isso vai tomar um rumo ruim e não tenho mais paciência para discutir com os deuses dos fóruns...

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
define(HTTP, 'taserto');
$array['HTTP'] = 'http://xxx';
echo $array[HTTP];
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem, não foi a falta do apostrofo que resolveu...

 

mas, pelo o que andei pesquisando, isto não é confiável...

 

tem alguma forma mais segura de saber esta origem da url?

não tem não, os HTTP não são seguros

e o HTTP_REFERER serve apenas para indicar de onde partiu o click, nada impede que o usuario copie a url e digite em uma nova aba, e neste caso não haverá HTTP_REFERER.

 

não se mate por ele, pois será apenas um link em algum site que você não tem como garantir o click oua copia da url.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pra complementar... Não use referer para validação de nada... Isso é comum em websites programados por iniciantes ou programadores que não tem conhecimentos avançados de segurança...

Os lammers agradece quando encontram falhas desse tipo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que voce supoe ser uma validação usando `HTTP_REFERER`?

poderia me dar um exemplo REAL de como `HTTP_REFERER`serve como validação?

 

Simples '-'

 

Por exemplo numa página que valida um formulario POST, se a pessoa quiser acessa-la sem que preencha o formulario ela consegue e assim, poderia causar algum ataque ao banco de dados ou coisa do tipo, mas usando o serviços de servidor do PHP, isso pode se tornar um pouco mais complicado:

$pagina = $_SERVER["HTTP_REFERER"];

if($pagina == "http://meusite.com/cadastro.html"){
   // executa função do formulario.
 
}else{
   header("Location: index.php");
 
}

Claro que, nesse exemplo poderia ser utilizado SESSION que seria MUITO mais facil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Simples '-'

 

Por exemplo numa página que valida um formulario POST, se a pessoa quiser acessa-la sem que preencha o formulario ela consegue e assim, poderia causar algum ataque ao banco de dados ou coisa do tipo, mas usando o serviços de servidor do PHP, isso pode se tornar um pouco mais complicado:

$pagina = $_SERVER["HTTP_REFERER"];

if($pagina == "http://meusite.com/cadastro.html"){
   // executa função do formulario.
 
}else{
   header("Location: index.php");
 
}

Claro que, nesse exemplo poderia ser utilizado SESSION que seria MUITO mais facil.

Essa validação não evita absolutamente nada, já que basta setar o cabeçalho usando por exemplo CURLOPT_REFERER e pronto, o HTTP_REFERER vai ter o valor que a pessoa quiser...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa validação não evita absolutamente nada, já que basta setar o cabeçalho usando por exemplo CURLOPT_REFERER e pronto, o HTTP_REFERER vai ter o valor que a pessoa quiser...

 

ESerra eu disse isso pode se tornar um pouco mais complicado: nao disse que nao poderá se fazer.

 

 

Nem todo formulário guarda o input no DB...

Ataque ao banco de dados não tem relação nenhuma com a origem do formulário.

 

criatividade zero o formulário em questao é de um cadastro que usei no exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ESerra eu disse isso pode se tornar um pouco mais complicado: nao disse que nao poderá se fazer.

Mas é o tipo de coisa que só desprende tempo do programador e não serve de absolutamente nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

ESerra eu disse isso pode se tornar um pouco mais complicado: nao disse que nao poderá se fazer.

 

Nosso conceito de "um pouco mais complicado" com certeza é muito diferente, porque basta setar uma linha no cURL e o que você idealizou se torna inútil...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nosso conceito de "um pouco mais complicado" com certeza é muito diferente, porque basta setar uma linha no cURL e o que você idealizou se torna inútil...

 

80% da web nao tem esse conhecimento.

Mas mesmo assim, ainda prefiro usar SESSAO -''

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.