Dalam pembangunan web, banyak senario memerlukan penggunaan lompatan halaman. Sebagai contoh, pengguna perlu melompat ke halaman utama selepas berjaya melog masuk, dan apabila mengakses halaman yang memerlukan log masuk semasa tidak log masuk, mereka perlu melompat ke halaman log masuk, dsb. Dalam PHP, kami biasanya menggunakan fungsi pengepala untuk melaksanakan lompatan halaman:
header('Location: http://www.example.com/');
Barisan kod ini akan mengubah hala halaman ke URL yang ditentukan. Walau bagaimanapun, apabila menggunakan fungsi pengepala untuk melompat ke halaman, kita juga perlu memberi perhatian kepada isu perujuk.
Perujuk ialah medan dalam protokol HTTP yang digunakan untuk menunjukkan sumber halaman yang diminta. Dalam istilah awam, jika pengguna melompat dari tapak web A ke tapak web B, apabila tapak web B menerima permintaan, ia akan mendapati medan perujuk ialah URL tapak web A. Dalam banyak senario, perujuk ialah maklumat yang sangat berguna, seperti analisis laman web, anti-lintah, dsb. Walau bagaimanapun, apabila melompat, perujuk menunjukkan trajektori tingkah laku pengguna, yang mungkin menimbulkan potensi risiko kebocoran privasi.
Secara khusus, dua situasi berikut mungkin menyebabkan perujuk membocorkan privasi pengguna:
Untuk mengelakkan perujuk daripada membocorkan privasi pengguna, kami boleh mengubah suai medan perujuk sebelum melompat. Berikut ialah dua kaedah biasa:
curl ialah perpustakaan permintaan rangkaian yang biasa digunakan Kami boleh menggunakan curl untuk mensimulasikan permintaan untuk mengubah suai perujuk. . Kod khusus adalah seperti berikut:
$url = 'http://www.example.com/'; $referer = 'http://www.referer-example.com/'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_REFERER, $referer); $response = curl_exec($ch); curl_close($ch); echo $response;
Kod ini akan mengubah suai medan perujuk kepada http://www.referer-example.com/, dan kemudian meminta http://www.example.com/ . Walau bagaimanapun, perlu diingatkan bahawa kaedah ini akan meningkatkan overhed pelayan, kerana setiap permintaan perlu menggunakan curl.
Selain menggunakan curl, kami juga boleh menggunakan tag meta HTML untuk mengubah suai perujuk. Kod khusus adalah seperti berikut:
<meta http-equiv="refresh" content="0;url=http://www.example.com/" /> <script> document.referrer = "http://www.referer-example.com/"; </script>
Kod ini akan mengubah suai medan perujuk kepada http://www.referer-example.com/, dan kemudian secara automatik melompat ke http://www.example. com/ . Kaedah ini agak mudah, tetapi ia juga mempunyai kekurangan, seperti ketidakupayaan untuk menangkap pengecualian kegagalan lompat dalam kod PHP.
Ringkasnya, walaupun mungkin terdapat beberapa risiko dalam kebocoran perujuk, tidak perlu terlalu risau. Kami hanya perlu mengubah suai perujuk dalam halaman yang perlu dilompat untuk mengelakkan kebanyakan risiko yang berpotensi. Apabila menggunakan kaedah di atas, anda perlu memilih kaedah yang sesuai mengikut senario tertentu.
Atas ialah kandungan terperinci Bagaimana untuk mengubah suai medan perujuk sebelum melompat dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!