Pergunta

Eu preciso tentar falsificar o HTTP_REFERER passou a minha outra página para que na página de destino, posso determinar do pedido é enviada da página "certo" e executar a lógica apropriada.

  1. Como posso fazer isso em JavaScript (AJAX)?
  2. Posso fazer isso em ASP.Net?

TIA carneiros

Foi útil?

Solução

De um modo geral, você não pode fazer com que outros navegadores para retornar uma falsa HTTP_REFERER sem um exploit, plug-in, ou outra extensão. Se você quiser modificar o valor enviado do seu navegador e você estiver usando FireFox, olhada extensão do modificar os cabeçalhos .

Em qualquer caso, você deve nunca confiar em HTTP_REFERER ser preciso. Não há garantia de que o HTTP_REFERER que você recebe não é falsificado ou simplesmente não foi enviada.

Outras dicas

Se você quiser teste na página de destino se uma solicitação é proveniente da página de "direita", você não precisa falsificar a referência. Tudo que você precisa fazer é emitir o pedido de uma página diferente. Configurar uma página em uma URL diferente do que você considera o "direito" um, e os pedidos de emissão de lá, clicando em um link para a página de destino ou colocando uma imagem proveniente do destino.

Já foi mencionado que você pode coisas realmente não spoof. Mas para esclarecer, o HTTP_REFERER cabeçalho é gerado pelo navegador , então no lado do servidor de coisas que você não pode controlá-lo (incluindo coisas entregar off javascript, o que pode ou não ser habilitado).

Se você quiser apenas para testar a resposta da sua página para determinados cabeçalhos (como "Referer:"), você pode usar ferramentas de linha de comando como onda ou wget que estão disponíveis na maioria BSD e Linux variantes (incluindo SO / X). Se você estiver usando MS Windows, você pode obter curl ou wget usando Cygwin .

    wget -O - --referer="http://example.com/some/path" http://example.com/

ou

    curl -e "http://example.com/some/path" http://example.com/

Mas a sua principal razão para isso é, aparentemente, para "proteger" uma página, eu acho. Se você realmente quer ter certeza de que uma página (chamá-lo de "B") só é visitado depois de alguma outra página ( "A") é visitado em primeiro lugar, então você precisa de uma lógica mais complexa no lado do servidor.

Se você está armazenando um cookie de sessão, então você pode incorporar alguma lógica na página "A" que define uma variável booleana. Em seguida, adicione a lógica na página "B", que verifica se a variável foi definida.

Vou deixar isso como um exercício para o leitor a descobrir como fazer isso em ASP.NET. (Porque eu sou um programador PHP; -.])

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top