Apakah saya mengerti Anda dengan benar bahwa jika saya menemukan situs Anda di google dan membuka tautannya, maka Anda login 'google.com'?
Roman
Jawaban:
310
Ini tersedia di header HTTPreferer . Anda bisa mendapatkannya di servlet sebagai berikut:
String referrer = request.getHeader("referer");// Yes, with the legendary misspelling.
Namun, Anda perlu menyadari bahwa ini adalah nilai yang dikendalikan klien dan karenanya dapat dipalsukan untuk sesuatu yang sama sekali berbeda atau bahkan dihilangkan. Jadi, berapa pun nilainya, Anda tidak boleh menggunakannya untuk proses bisnis penting apa pun di backend, tetapi hanya untuk kontrol presentasi (misalnya menyembunyikan / menampilkan / mengubah bagian tata letak murni tertentu) dan / atau statistik.
Bagi yang berminat, latar belakang tentang kesalahan mengeja dapat ditemukan di Wikipedia .
apakah itu membuat perbedaan "referer" & "Referer"?
ante.sabo
7
@ante: tidak, pencarian tajuk tidak peka huruf besar-kecil.
BalusC
2
Perhatikan bahwa sembarang header bisa null.
rds
@ BalusC Bagaimana jika saya membutuhkan dua url sebelumnya? Apakah mungkin?
Angel Cuenca
26
Sebenarnya ini
:, request.getHeader("Referer")atau bahkan lebih baik, dan untuk menjadi 100% yakin
request.getHeader(HttpHeaders.REFERER), di mana HttpHeaders beradacom.google.common.net.HttpHeaders
Saya ingin menambahkan beberapa detail tentang aspek keamanan header referer berbeda dengan jawaban yang diterima. Dalam lembar cheat Proyek Keamanan Aplikasi Web Terbuka ( OWASP ), di bawah Lembar Penipuan Penipuan Permintaan Situs (CSRF) disebutkan tentang pentingnya header referensi .
Lebih penting lagi untuk pemeriksaan Same Origin yang direkomendasikan ini, sejumlah header permintaan HTTP tidak dapat ditetapkan oleh JavaScript karena mereka berada di daftar header 'terlarang'. Hanya browser itu sendiri yang dapat menetapkan nilai untuk header ini, membuatnya lebih dapat dipercaya karena bahkan kerentanan XSS tidak dapat digunakan untuk memodifikasinya.
Sumber Asal cek yang direkomendasikan di sini bergantung pada tiga dari header yang dilindungi ini: Origin, Referer, dan Host, menjadikannya pertahanan CSRF yang cukup kuat.
Anda dapat merujuk daftar tajuk Terlarang di sini . Agen pengguna (yaitu: browser) memiliki kontrol penuh atas tajuk ini, bukan pengguna.
Jawaban:
Ini tersedia di header HTTP
referer
. Anda bisa mendapatkannya di servlet sebagai berikut:Namun, Anda perlu menyadari bahwa ini adalah nilai yang dikendalikan klien dan karenanya dapat dipalsukan untuk sesuatu yang sama sekali berbeda atau bahkan dihilangkan. Jadi, berapa pun nilainya, Anda tidak boleh menggunakannya untuk proses bisnis penting apa pun di backend, tetapi hanya untuk kontrol presentasi (misalnya menyembunyikan / menampilkan / mengubah bagian tata letak murni tertentu) dan / atau statistik.
Bagi yang berminat, latar belakang tentang kesalahan mengeja dapat ditemukan di Wikipedia .
sumber
null
.Sebenarnya ini :,
request.getHeader("Referer")
atau bahkan lebih baik, dan untuk menjadi 100% yakinrequest.getHeader(HttpHeaders.REFERER)
, di mana HttpHeaders beradacom.google.common.net.HttpHeaders
sumber
getHeader(String name)
(kutipan):"The header name is case insensitive."
org.apache.http.HttpHeaders
URL yang lulus dalam permintaan:
request.getRequestURL()
.Jika Anda maksudkan situs lain yang menaut ke Anda? Anda ingin menangkap Pengarah HTTP, yang dapat Anda lakukan dengan menelepon:
sumber
Seperti yang telah disebutkan semua
Saya ingin menambahkan beberapa detail tentang aspek keamanan header referer berbeda dengan jawaban yang diterima. Dalam lembar cheat Proyek Keamanan Aplikasi Web Terbuka ( OWASP ), di bawah Lembar Penipuan Penipuan Permintaan Situs (CSRF) disebutkan tentang pentingnya header referensi .
Anda dapat merujuk daftar tajuk Terlarang di sini . Agen pengguna (yaitu: browser) memiliki kontrol penuh atas tajuk ini, bukan pengguna.
sumber