Como saber onde o usuário está vindo?
-
06-07-2019 - |
Pergunta
Existe uma maneira confiável para determinar onde um usuário está vindo em um aplicativo ASP.NET? Nós temos uma aplicação web que está ligado a partir de dois locais diferentes. Os dois links estão em domínios separados, e eles precisam de ditar certas permissões de usuário dentro desta aplicação. Aqui está o que eu tentei até agora ...
-
Usando
Request.UrlReferrer
(que é o Referer cabeçalho HTTP). Isso sempre devolveu uma cadeia vazia. Eu acredito que este é porque os hiperlinks usar o Javascript para abrir uma janela pop-up. Baseado em minha pesquisa, o agente do usuário fornece este cabeçalho HTTP em hiperlinks padrão. popups Javascript são uma história diferente (evidentemente). -
Uma cadeia de consulta simples para indicar a referência. Isto não é realmente uma opção porque precisamos de algo que não é tão fácil de derivação (mais seguro).
Todas as idéias? Eu entendo que, no grande esquema das coisas, isso poderia ter um design / melhor estrutura em geral. Por favor, não postar uma resposta sugerindo que eu re-design tudo, porque isso não é uma opção.
Solução
Não há uma maneira confiável para dizer onde um usuário está vindo e isso não é apenas uma limitação ASP.NET, mas todas as aplicações web em geral. A referência url pode ser facilmente falsificado para que ele não é confiável. Eu acho que a melhor opção poderia ser algum parâmetro url criptografada, ou cookie se você preferir.
Assim, ambas as páginas devem concordar com chaves privadas comuns.
- Página1 usará a chave para criptografar seu endereço e passá-lo para Page2
- Page2 irá verificar a presença desse parâmetro e tentar decifrá-lo com a mesma chave privada usada para criptografar
- Se isto sucede isso significa que Page2 será capaz de determinar quem chamou, se não, os dados foi adulterado
Outras dicas
Sem o navegador passar um referencial ou usando o querystring como você descreve, não há nenhuma maneira de saber.
Outra opção é ter duas páginas de destino diferentes sobre a aplicação ASP.NET. As páginas de destino pode definir as opções de segurança e, em seguida, redirecionar para uma página inicial comum. Isto é um pouco mais seguro do que a opção querystring.
Ou, você pode colocar uma imagem de 1x1 pixel sobre os sites de referência que é puxado a partir do seu local de aplicação ASP.NET. A referência deve ser passado para o script e você poderia, então, definir um cookie na máquina usuários que você pode fazer referência quando batem a página inicial do aplicativo.