2010-04-15 4 views

ответ

266

Доступно в HTTP referer header. Вы можете получить его в сервлет следующим образом:

String referrer = request.getHeader("referer"); // Yes, with the legendary misspelling. 

Вы, однако, должны понимать, что это клиент-контролируемое значение и, таким образом, может быть подделан к чему-то совершенно другой, или даже удалить. Таким образом, независимо от того, какое значение оно возвращает, вы не должны использовать его для каких-либо критических бизнес-процессов в бэкэнд, но только для управления презентацией (например, скрытия/отображения/изменения некоторых частей чистого макета) и/или статистики.

Для интересующихся, фон о орфографии можно найти в Wikipedia.

+2

действительно ли это имеет значение «referer» и «Referer»? –

+7

@ante: нет, поиск в заголовке нечувствителен к регистру. – BalusC

+1

Обратите внимание, что любой заголовок может быть «null». – rds

13

URL-адреса передаются в запросе: request.getRequestURL().

Если вы имеете в виду другие сайты, которые ссылаются на вас? Вы хотите, чтобы захватить HTTP Referrer, который вы можете сделать по телефону:

request.getHeader("referer"); 
21

На самом деле это: request.getHeader("Referer"), или даже лучше, и быть 100% уверены, request.getHeader(HttpHeaders.REFERER), где HttpHeaders является com.google.common.net.HttpHeaders

+9

Из документов API Java EE для метода ['getHeader (String name)'] (http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getHeader (java. lang.String)) (quote): '" Имя заголовка нечувствительно к регистру. "' – informatik01

+5

переместить в любом случае для ссылки HttpHeaders. Apache HTTP еще один хороший: 'org.apache.http.HttpHeaders' – Barett

2

Как все уже упоминали, что это

request.getHeader("referer"); 

Я хотел бы добавить некоторые подробности о аспекте безопасности referar Заголовок в отличие от принятого ответа. В Open Web Application Security Project (OWASP) чит-листы под Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet упоминается о важности referer header.

Что еще более важно для этого рекомендуется Проверка того же происхождения, некоторые заголовки HTTP-запросов не могут быть установлены JavaScript, поскольку они находятся в списке запрещенных заголовков. Только сами браузеры могут устанавливать значения для этих заголовков, делая их более надежными, потому что даже не может быть использована уязвимость XSS для их изменения.

Исходная проверка источника, рекомендованная здесь, основана на трех из этих защищенных заголовков: Origin, Referer и Host, что делает его довольно сильным CSRF-защитой.

Вы можете сослаться на Forbidden header list here. Пользовательский агент (т. Е. Браузер) имеет полный контроль над этими заголовками, а не пользователем.

Смежные вопросы