halfar 5 Denunciar post Postado Julho 31, 2014 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
CL4nG 36 Denunciar post Postado Julho 31, 2014 $_SERVER['HTTP_REFERER'];Faltou apóstrofos. Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Julho 31, 2014 este codigo é realmente confiável, porque está retornando em branco? Nenhum pouco confiável Compartilhar este post Link para o post Compartilhar em outros sites
halfar 5 Denunciar post Postado Julho 31, 2014 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
CL4nG 36 Denunciar post Postado Julho 31, 2014 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: 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
ESerra 744 Denunciar post Postado Julho 31, 2014 Mesmo? Da uma olhada: 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
CL4nG 36 Denunciar post Postado Julho 31, 2014 É 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
ESerra 744 Denunciar post Postado Julho 31, 2014 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
CL4nG 36 Denunciar post Postado Julho 31, 2014 <?phpdefine(HTTP, 'taserto');$array['HTTP'] = 'http://xxx';echo $array[HTTP];?> Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Julho 31, 2014 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
CL4nG 36 Denunciar post Postado Julho 31, 2014 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
criatividade zero 17 Denunciar post Postado Agosto 1, 2014 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? Compartilhar este post Link para o post Compartilhar em outros sites
Vitor RC 11 Denunciar post Postado Agosto 1, 2014 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
ESerra 744 Denunciar post Postado Agosto 1, 2014 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
criatividade zero 17 Denunciar post Postado Agosto 1, 2014 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. Compartilhar este post Link para o post Compartilhar em outros sites
Vitor RC 11 Denunciar post Postado Agosto 1, 2014 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
criatividade zero 17 Denunciar post Postado Agosto 1, 2014 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 744 Denunciar post Postado Agosto 1, 2014 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
Vitor RC 11 Denunciar post Postado Agosto 1, 2014 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
criatividade zero 17 Denunciar post Postado Agosto 2, 2014 80% da web nao tem esse conhecimento. Mas mesmo assim, ainda prefiro usar SESSAO -'' Vou repassar a pergunta para vc agora. Como vc usaria sessão para garantir um envio de formulario? Compartilhar este post Link para o post Compartilhar em outros sites