Habe ich Sie richtig verstanden, dass Sie "google.com" angemeldet haben, wenn ich Ihre Website in Google gefunden und den Link geöffnet habe?
Roman
Antworten:
310
Es ist im HTTP- refererHeader 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 .
@ante: Nein, bei der Header-Suche wird die Groß- und Kleinschreibung nicht berücksichtigt.
BalusC
2
Beachten Sie, dass jeder Header sein kann null.
rds
@BalusC Was ist, wenn ich die beiden vorherigen URLs benötige? Es ist möglich ?
Angel Cuenca
26
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
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.
Antworten:
Es ist im HTTP-
referer
Header verfügbar . Sie können es in einem Servlet wie folgt erhalten: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 .
quelle
null
.Eigentlich ist es:
request.getHeader("Referer")
oder noch besser, und um 100% sicher zu seinrequest.getHeader(HttpHeaders.REFERER)
, wo HttpHeaders istcom.google.common.net.HttpHeaders
quelle
getHeader(String name)
(Zitat):"The header name is case insensitive."
org.apache.http.HttpHeaders
Die URLs werden in der Anfrage übergeben :
request.getRequestURL()
.Wenn Sie andere Websites meinen, die auf Sie verlinken? Sie möchten den HTTP-Referrer erfassen, indem Sie Folgendes aufrufen:
quelle
Wie alle schon erwähnt haben
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.
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.
quelle