Правильно ли я вас понял, что если я нашел ваш сайт в Google и открыл ссылку, то вы вошли в систему "google.com"?
Роман
Ответы:
311
Это доступно в заголовке HTTPreferer . Вы можете получить его в сервлете следующим образом:
String referrer = request.getHeader("referer");// Yes, with the legendary misspelling.
Однако вам необходимо осознать, что это контролируемое клиентом значение, и поэтому оно может быть подделано к чему-то совершенно другому или даже удалено. Таким образом, какое бы значение оно не возвращало, вы не должны использовать его для каких-либо критических бизнес-процессов в бэкэнде, а только для управления представлением (например, скрытие / отображение / изменение определенных частей чистого макета) и / или статистики.
Для заинтересованных, справочную информацию об опечатках можно найти в Википедии .
@ante: нет, поиск заголовка не чувствителен к регистру.
BalusC
2
Обратите внимание, что любой заголовок может быть null.
Rds
@BalusC Что, если мне понадобятся два предыдущих URL? Это возможно ?
Ангел Куэнка
26
На самом деле это:
request.getHeader("Referer")или даже лучше, и, чтобы быть на 100% уверенным
request.getHeader(HttpHeaders.REFERER), где HttpHeaderscom.google.common.net.HttpHeaders
Я хотел бы добавить некоторые подробности о аспекте безопасности заголовка реферера в отличие от принятого ответа. В шпаргалках Открытого проекта безопасности веб-приложений ( OWASP ), в разделе Шпаргалка предотвращения межсайтовых запросов (CSRF), упоминается важность заголовка реферера .
Что еще более важно для этой рекомендованной проверки Same Origin, количество заголовков HTTP-запросов не может быть установлено JavaScript, поскольку они находятся в списке «запрещенных» заголовков. Только сами браузеры могут устанавливать значения для этих заголовков, делая их более надежными, потому что даже уязвимость XSS не может быть использована для их изменения.
Рекомендуемая здесь проверка Source Source основана на трех из этих защищенных заголовков: Origin, Referer и Host, что делает его довольно сильной защитой от CSRF.
Вы можете сослаться на список запрещенных заголовков здесь . Пользовательский агент (т.е. браузер) имеет полный контроль над этими заголовками, а не пользователь.
Ответы:
Это доступно в заголовке HTTP
referer
. Вы можете получить его в сервлете следующим образом:Однако вам необходимо осознать, что это контролируемое клиентом значение, и поэтому оно может быть подделано к чему-то совершенно другому или даже удалено. Таким образом, какое бы значение оно не возвращало, вы не должны использовать его для каких-либо критических бизнес-процессов в бэкэнде, а только для управления представлением (например, скрытие / отображение / изменение определенных частей чистого макета) и / или статистики.
Для заинтересованных, справочную информацию об опечатках можно найти в Википедии .
источник
null
.На самом деле это:
request.getHeader("Referer")
или даже лучше, и, чтобы быть на 100% увереннымrequest.getHeader(HttpHeaders.REFERER)
, где HttpHeaderscom.google.common.net.HttpHeaders
источник
getHeader(String name)
(цитата):"The header name is case insensitive."
org.apache.http.HttpHeaders
URL - адрес передается в запросе:
request.getRequestURL()
.Если вы имеете в виду другие сайты, которые ссылаются на вас? Вы хотите перехватить HTTP Referrer, что можно сделать, вызвав:
источник
Как все уже упоминали, это
Я хотел бы добавить некоторые подробности о аспекте безопасности заголовка реферера в отличие от принятого ответа. В шпаргалках Открытого проекта безопасности веб-приложений ( OWASP ), в разделе Шпаргалка предотвращения межсайтовых запросов (CSRF), упоминается важность заголовка реферера .
Вы можете сослаться на список запрещенных заголовков здесь . Пользовательский агент (т.е. браузер) имеет полный контроль над этими заголовками, а не пользователь.
источник