Yanıtlar:
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 .
null.
Aslında:
request.getHeader("Referer")ya da daha iyisi ve% 100 emin olmak için,
request.getHeader(HttpHeaders.REFERER)HttpHeaderscom.google.common.net.HttpHeaders
getHeader(String name)(alıntı):"The header name is case insensitive."
org.apache.http.HttpHeaders
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.