HttpServletRequest - yönlendiren URL nasıl edinilir?


144

Java Servlet'teki siteme bağlanan URL'leri günlüğe kaydetmem gerekiyor.


Sitenizi google'da bulup bağlantıyı açtıysam 'google.com' girişini yaptığınızı doğru anladım mı?
Roma

Yanıtlar:


311

Bu kullanılabildiğine HTTP refererbaşlığında . Aşağıdaki gibi bir sunucu uygulamasında alabilirsiniz:

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

Bununla birlikte, bunun müşteri tarafından kontrol edilen bir değer olduğunu ve böylece tamamen farklı bir şeye taklit edilebileceğini ve hatta kaldırılabileceğini bilmeniz gerekir. Bu nedenle, ne kadar değer verirse döndürsün, bunu arka uçtaki kritik iş süreçleri için kullanmamalı, yalnızca sunum kontrolü (örneğin, belirli saf düzen parçalarını gizleme / gösterme / değiştirme) ve / veya istatistikler için kullanmalısınız.

İlgilenmek için, yanlış yazımla ilgili arka plan Wikipedia'da bulunabilir .


2
"yönlendiren" ve "yönlendiren" bir fark yaratır mı?
ante.sabo

7
@ante: hayır, başlık araması büyük / küçük harfe duyarlı değildir.
BalusC

2
Herhangi bir üstbilginin olabileceğini unutmayın null.
rds

@BalusC Önceki iki URL'ye ihtiyacım olursa ne olur? Bu mümkün ?
Angel Cuenca

26

Aslında: request.getHeader("Referer")ya da daha iyisi ve% 100 emin olmak için, request.getHeader(HttpHeaders.REFERER)HttpHeaderscom.google.common.net.HttpHeaders


11
Yöntem için Java EE API belgelerinden getHeader(String name)(alıntı):"The header name is case insensitive."
informatik01

7
HttpHeaders referansı için yine de oy verin. Apache HTTP başka bir iyi:org.apache.http.HttpHeaders
Barett

16

URL'ler istekte geçirilir: request.getRequestURL().

Size bağlantı veren diğer siteleri mi kastediyorsunuz? Arayarak yapabileceğiniz HTTP Yönlendiricisini yakalamak istiyorsunuz:

request.getHeader("referer");

6

Herkesin de belirttiği gibi

request.getHeader("referer");

Kabul edilen başlığın aksine yönlendirme başlığının güvenlik yönü hakkında daha fazla ayrıntı eklemek istiyorum . Açık Web Uygulaması Güvenlik Projesi (In OWASP ) altında hile yaprak, xsrf (CSRF) Önleme Cheat Sheet o önemi hakkında bahseder yönlendiren başlığındaki.

Daha da önemlisi, bu önerilen Aynı Kökeni kontrolü için, 'yasak' üstbilgiler listesinde oldukları için bir dizi HTTP istek üstbilgisi JavaScript tarafından ayarlanamaz. Yalnızca tarayıcıların kendileri bu üstbilgiler için değer ayarlayabilir, bu da onları daha güvenilir kılar, çünkü bunları değiştirmek için bir XSS güvenlik açığı bile kullanılamaz.

Burada önerilen Kaynak Kaynak Kontrolü, şu korunan başlıklardan üçüne dayanır: Kaynak, Yönlendiren ve Sunucu, tek başına oldukça güçlü bir CSRF savunması yapar.

Yasak başlık listesine buradan başvurabilirsiniz . Kullanıcı aracısı (yani: tarayıcı) kullanıcı değil bu başlıklar üzerinde tam denetime sahiptir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.