Qual é a maneira mais confiável e segura de determinar qual página enviou ou chamou (via AJAX) a página atual. Não quero usar o $_SERVER['HTTP_REFERER']
, por causa da (falta de) confiabilidade, e preciso que a página que está sendo chamada venha apenas de solicitações originadas em meu site.
Editar: estou procurando verificar se um script que realiza uma série de ações está sendo chamado de uma página em meu site.
php
http-referer
UnkwnTech
fonte
fonte
$_SERVER[REMOTE_ADDR]
.Respostas:
O REFERER é enviado pelo navegador do cliente como parte do protocolo HTTP e, portanto, não é confiável. Pode não estar lá, pode ser forjado, você simplesmente não pode confiar nele por razões de segurança.
Se você deseja verificar se uma solicitação está vindo do seu site, você não pode, mas pode verificar se o usuário acessou o seu site e / ou está autenticado. Os cookies são enviados em solicitações AJAX para que você possa confiar nisso.
fonte
O que eu encontrei melhor é um token CSRF e salve-o na sessão para links onde você precisa verificar o referenciador.
Portanto, se você estiver gerando um retorno de chamada FB, será algo assim:
Então o index.php ficará assim:
Eu conheço sites seguros que fazem o equivalente a isso para todas as suas páginas seguras.
fonte
$_GET['token'] == $_SESSION['token']
e não$_GET['token'] !== $_SESSION['token']
?Usando $ _SERVER ['HTTP_REFERER']
fonte
Não existe uma maneira confiável de verificar isso. Está realmente nas mãos do cliente para lhe dizer de onde veio. Você poderia imaginar o uso de cookies ou informações de sessões colocadas apenas em algumas páginas do seu site, mas fazer isso quebraria a experiência do usuário com os favoritos.
fonte
Só nos resta uma única opção depois de ler todos os problemas de referência falsa: ou seja, a página que desejamos rastrear como referenciador deve ser mantida na sessão, e como ajax chamado, em seguida, verificar na sessão se ela tem o valor da página referenciadora e fazer a ação de outra forma, não açao.
Por outro lado, quando ele solicita qualquer página diferente, torne o valor da sessão do referenciador nulo.
Lembre-se de que a variável de sessão é definida apenas na solicitação da página de desejo.
fonte