Antworten:
Es ist im HTTP- referer
Header verfügbar . Sie können es in einem Servlet wie folgt erhalten:
String referrer = request.getHeader("referer"); // Yes, with the legendary misspelling.
Sie müssen jedoch erkennen, dass dies ein vom Kunden kontrollierter Wert ist und somit auf etwas völlig anderes gefälscht oder sogar entfernt werden kann. Unabhängig vom zurückgegebenen Wert sollten Sie ihn daher nicht für kritische Geschäftsprozesse im Backend verwenden, sondern nur für die Präsentationssteuerung (z. B. Ausblenden / Anzeigen / Ändern bestimmter reiner Layoutteile) und / oder Statistiken.
Für Interessierte finden Sie Hintergrundinformationen zu Rechtschreibfehlern in Wikipedia .
null
.
Eigentlich ist es:
request.getHeader("Referer")
oder noch besser, und um 100% sicher zu sein
request.getHeader(HttpHeaders.REFERER)
, wo HttpHeaders istcom.google.common.net.HttpHeaders
getHeader(String name)
(Zitat):"The header name is case insensitive."
org.apache.http.HttpHeaders
Wie alle schon erwähnt haben
request.getHeader("referer");
Ich möchte im Gegensatz zur akzeptierten Antwort einige weitere Details zum Sicherheitsaspekt des Referer- Headers hinzufügen . In OWASP- Spickzettel (Open Web Application Security Project ) wird unter CSRF-Präventions- Spickzettel ( Cross-Site Request Forgery) die Bedeutung des Referer- Headers erwähnt.
Noch wichtiger für diese empfohlene Überprüfung des gleichen Ursprungs ist, dass eine Reihe von HTTP-Anforderungsheadern nicht von JavaScript festgelegt werden können, da sie in der Liste der "verbotenen" Header aufgeführt sind. Nur die Browser selbst können Werte für diese Header festlegen, wodurch sie vertrauenswürdiger werden, da nicht einmal eine XSS-Sicherheitsanfälligkeit zum Ändern verwendet werden kann.
Die hier empfohlene Quellursprungsprüfung basiert auf drei dieser geschützten Header: Origin, Referer und Host, was sie zu einer ziemlich starken CSRF-Verteidigung für sich macht.
Sie können hier auf die Liste der verbotenen Header verweisen . Der Benutzeragent (dh der Browser) hat die volle Kontrolle über diese Header, nicht der Benutzer.