IFrame questão referer - asp.net c #
-
18-09-2019 - |
Pergunta
Um dos nosso aplicativo será executado em um iframe, dentro Salesforce e eu estou tendo problemas com acessando o referer. Eles gostaria de nos fazer algumas verificações referer, para garantir que a solicitação é proveniente de força de vendas e que nos foi dado os endereços IP para verificar contra.
Meu problema é que sempre que eu tento acessar o referer através de um dos dois métodos a seguir:
HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]
HttpContext.Current.Request.UrlReferrer
retorna me nulo.
Alguma idéia de como eu poderia se apossar do referer?
PS:. Estou ciente de que você pode falsificar o referer, mas é parte da exigência
Solução
Se eu entendi a pergunta corretamente você tem sites de clientes que se referem ao seu site, incorporando IFrames em suas páginas o ponto para o seu site. Você deseja "garantir" que os pedidos são provenientes de página de acolhimento, que em si é parte de um conjunto designado de sites. O conjunto de locais designados é descrito por um conjunto de endereços IP. Será que cobri-lo?
Tricky. Primeiro vamos supor que você tem um referer. Você precisará adquirir o nome do host a partir dele (bastante fácil usando o tipo Uri
). Então você precisa para resolver o endereço IP para o nome do host usando o DNS (mais uma vez não muito difícil com .NET framework).
Claro que você precisa para obter um referer e que é a pouco mais complicada. Browsers nem sempre colocar um cabeçalho de referência na solicitação. Isto é especialmente verdadeiro quando o endereço árbitro não está no mesmo domínio que o referer, que é o caso aqui. IOW, este é um showstopper .
A melhor abordagem para resolver este problema (e não é propenso a spoofing) é usar algum autenticação baseada hash. Não tem que ser muito sofisticado (se os requisitos originais sentiu o teste referer era de qualquer maneira suficiente).
Outras dicas
A referrer existe apenas se a página foi solicitada através de um link. Quando uma página é aberta exemplo da barra de endereços em um navegador, digitando o endereço diretamente (ou no seu caso definir o src y. Do IFRAME), o indicador estará vazia.