Entendi corretamente que, se encontrei seu site no google e abri o link, você registrou 'google.com'?
Roman
Respostas:
310
Está disponível no cabeçalho HTTPreferer . Você pode obtê-lo em um servlet da seguinte maneira:
String referrer = request.getHeader("referer");// Yes, with the legendary misspelling.
Você, no entanto, precisa perceber que esse é um valor controlado pelo cliente e, portanto, pode ser falsificado para algo totalmente diferente ou mesmo removido. Portanto, qualquer que seja o valor que ele retorne, você não deve usá-lo para nenhum processo crítico de negócios no back-end, mas apenas para o controle da apresentação (por exemplo, ocultar / mostrar / alterar certas partes do layout) e / ou estatísticas.
Para os interessados, é possível encontrar informações sobre o erro ortográfico na Wikipedia .
@ante: não, a pesquisa de cabeçalho não diferencia maiúsculas de minúsculas.
BalusC
2
Observe que qualquer cabeçalho pode ser null.
Rds 03/03
@BalusC E se eu precisar dos dois URLs anteriores? É possível ?
Anjo Cuenca
26
Na verdade, é:
request.getHeader("Referer")ou melhor ainda, e para ter 100% de certeza
request.getHeader(HttpHeaders.REFERER), onde o HttpHeaders estácom.google.common.net.HttpHeaders
Gostaria de adicionar mais alguns detalhes sobre o aspecto de segurança do cabeçalho do referenciador, em contraste com a resposta aceita. Nas folhas de dicas do Open Web Application Security Project ( OWASP ), em Folha de dicas de prevenção de falsificação de solicitação entre sites (CSRF), ele menciona a importância do cabeçalho do referenciador .
Mais importante para esta verificação de mesma origem recomendada, vários cabeçalhos de solicitação HTTP não podem ser definidos pelo JavaScript, porque estão na lista de cabeçalhos 'proibidos'. Somente os próprios navegadores podem definir valores para esses cabeçalhos, tornando-os mais confiáveis, porque nem mesmo uma vulnerabilidade XSS pode ser usada para modificá-los.
A verificação da Origem de origem recomendada aqui baseia-se em três desses cabeçalhos protegidos: Origem, Referenciador e Host, tornando-se uma defesa CSRF bastante forte por si só.
Você pode consultar a lista de cabeçalhos proibidos aqui . O agente do usuário (ou seja, navegador) tem controle total sobre esses cabeçalhos e não sobre o usuário.
Respostas:
Está disponível no cabeçalho HTTP
referer
. Você pode obtê-lo em um servlet da seguinte maneira:Você, no entanto, precisa perceber que esse é um valor controlado pelo cliente e, portanto, pode ser falsificado para algo totalmente diferente ou mesmo removido. Portanto, qualquer que seja o valor que ele retorne, você não deve usá-lo para nenhum processo crítico de negócios no back-end, mas apenas para o controle da apresentação (por exemplo, ocultar / mostrar / alterar certas partes do layout) e / ou estatísticas.
Para os interessados, é possível encontrar informações sobre o erro ortográfico na Wikipedia .
fonte
null
.Na verdade, é:
request.getHeader("Referer")
ou melhor ainda, e para ter 100% de certezarequest.getHeader(HttpHeaders.REFERER)
, onde o HttpHeaders estácom.google.common.net.HttpHeaders
fonte
getHeader(String name)
(citação):"The header name is case insensitive."
org.apache.http.HttpHeaders
Os URLs são passados na solicitação:
request.getRequestURL()
.Se você quer dizer outros sites com links para você? Você deseja capturar o Referenciador HTTP, o que você pode fazer chamando:
fonte
Como todos mencionaram, é
Gostaria de adicionar mais alguns detalhes sobre o aspecto de segurança do cabeçalho do referenciador, em contraste com a resposta aceita. Nas folhas de dicas do Open Web Application Security Project ( OWASP ), em Folha de dicas de prevenção de falsificação de solicitação entre sites (CSRF), ele menciona a importância do cabeçalho do referenciador .
Você pode consultar a lista de cabeçalhos proibidos aqui . O agente do usuário (ou seja, navegador) tem controle total sobre esses cabeçalhos e não sobre o usuário.
fonte