Czy dobrze zrozumiałem, że jeśli znalazłem Twoją witrynę w google i otworzyłem link, to zalogowałeś się na „google.com”?
Roman
Odpowiedzi:
310
Jest dostępny w nagłówku HTTPreferer . Możesz go pobrać w serwlecie w następujący sposób:
String referrer = request.getHeader("referer");// Yes, with the legendary misspelling.
Musisz jednak zdać sobie sprawę, że jest to wartość kontrolowana przez klienta i dlatego można ją sfałszować na coś zupełnie innego, a nawet usunąć. W związku z tym, niezależnie od zwracanej wartości, nie należy jej używać do żadnych krytycznych procesów biznesowych w zapleczu, a jedynie do sterowania prezentacją (np. Ukrywania / pokazywania / zmiany niektórych czystych części układu) i / lub statystyk.
Dla zainteresowanych wyjaśnienie dotyczące błędów ortograficznych można znaleźć w Wikipedii .
@ante: nie, przy wyszukiwaniu nagłówków wielkość liter nie jest rozróżniana.
BalusC
2
Zauważ, że każdy nagłówek może być null.
rds
@BalusC A jeśli potrzebuję dwóch poprzednich adresów URL? To jest możliwe ?
Angel Cuenca
26
Właściwie to:
request.getHeader("Referer")lub nawet lepiej, a żeby być pewnym na 100%
request.getHeader(HttpHeaders.REFERER), gdzie jest HttpHeaderscom.google.common.net.HttpHeaders
Chciałbym dodać więcej szczegółów na temat aspektu bezpieczeństwa nagłówka referer w przeciwieństwie do akceptowanej odpowiedzi. W ściągach Open Web Application Security Project ( OWASP ), w sekcji Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet wspomina się o znaczeniu nagłówka referer .
Co ważniejsze, w przypadku tego zalecanego sprawdzania Same Origin nie można ustawić wielu nagłówków żądań HTTP w języku JavaScript, ponieważ znajdują się one na liście „zabronionych” nagłówków. Tylko same przeglądarki mogą ustawić wartości dla tych nagłówków, co czyni je bardziej godnymi zaufania, ponieważ nawet luka XSS nie może zostać wykorzystana do ich modyfikacji.
Zalecane tutaj sprawdzenie pochodzenia źródła opiera się na trzech z tych chronionych nagłówków: Origin, Referer i Host, co czyni go całkiem silną obroną CSRF.
Możesz odnieść się do listy zabronionych nagłówków tutaj . Agent użytkownika (tj. Przeglądarka) ma pełną kontrolę nad tymi nagłówkami, a nie użytkownik.
Odpowiedzi:
Jest dostępny w nagłówku HTTP
referer
. Możesz go pobrać w serwlecie w następujący sposób:Musisz jednak zdać sobie sprawę, że jest to wartość kontrolowana przez klienta i dlatego można ją sfałszować na coś zupełnie innego, a nawet usunąć. W związku z tym, niezależnie od zwracanej wartości, nie należy jej używać do żadnych krytycznych procesów biznesowych w zapleczu, a jedynie do sterowania prezentacją (np. Ukrywania / pokazywania / zmiany niektórych czystych części układu) i / lub statystyk.
Dla zainteresowanych wyjaśnienie dotyczące błędów ortograficznych można znaleźć w Wikipedii .
źródło
null
.Właściwie to:
request.getHeader("Referer")
lub nawet lepiej, a żeby być pewnym na 100%request.getHeader(HttpHeaders.REFERER)
, gdzie jest HttpHeaderscom.google.common.net.HttpHeaders
źródło
getHeader(String name)
(cytat):"The header name is case insensitive."
org.apache.http.HttpHeaders
Adresy URL są przekazywane na żądanie:
request.getRequestURL()
.Czy masz na myśli inne witryny, które prowadzą do Ciebie? Chcesz przechwycić stronę odsyłającą HTTP, co możesz zrobić, wywołując:
źródło
Jak wszyscy wspomnieli, jest
Chciałbym dodać więcej szczegółów na temat aspektu bezpieczeństwa nagłówka referer w przeciwieństwie do akceptowanej odpowiedzi. W ściągach Open Web Application Security Project ( OWASP ), w sekcji Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet wspomina się o znaczeniu nagłówka referer .
Możesz odnieść się do listy zabronionych nagłówków tutaj . Agent użytkownika (tj. Przeglądarka) ma pełną kontrolę nad tymi nagłówkami, a nie użytkownik.
źródło