Respuestas:
Está disponible en el encabezado HTTPreferer
. Puede obtenerlo en un servlet de la siguiente manera:
String referrer = request.getHeader("referer"); // Yes, with the legendary misspelling.
Sin embargo, debe darse cuenta de que se trata de un valor controlado por el cliente y, por lo tanto, puede suplantarse a algo completamente diferente o incluso eliminarse. Por lo tanto, sea cual sea el valor que devuelva, no debe usarlo para ningún proceso comercial crítico en el back-end, sino solo para el control de la presentación (por ejemplo, ocultar / mostrar / cambiar ciertas partes de diseño puro) y / o estadísticas.
Para los interesados, los antecedentes sobre la falta de ortografía se pueden encontrar en Wikipedia .
null
.
En realidad es:
request.getHeader("Referer")
o incluso mejor, y para estar 100% seguro
request.getHeader(HttpHeaders.REFERER)
, dónde está HttpHeaderscom.google.common.net.HttpHeaders
getHeader(String name)
(presupuesto):"The header name is case insensitive."
org.apache.http.HttpHeaders
Como todos han mencionado, es
request.getHeader("referer");
Me gustaría añadir algunos detalles más sobre aspecto de seguridad de árbitro cabecera en contraste con la respuesta aceptada. En Abrir Proyecto Seguridad de Aplicaciones Web ( OWASP ), hojas de trucos bajo solicitud entre sitios Falsificación Hoja (CSRF) Prevención de trucos que menciona acerca de la importancia árbitro cabecera.
Más importante aún para esta verificación recomendada del mismo origen, JavaScript no puede establecer una cantidad de encabezados de solicitud HTTP porque están en la lista de encabezados 'prohibidos'. Solo los navegadores mismos pueden establecer valores para estos encabezados, haciéndolos más confiables porque ni siquiera una vulnerabilidad XSS puede usarse para modificarlos.
La verificación de Origen de origen recomendada aquí se basa en tres de estos encabezados protegidos: Origen, Referer y Host, por lo que es una defensa CSRF bastante fuerte por sí sola.
Puede consultar la lista de encabezados prohibidos aquí . El agente de usuario (es decir, el navegador) tiene el control total sobre estos encabezados, no el usuario.