Dalam PHP, cara biasa untuk mendapatkan IP yang diminta secara amnya melalui tiga pembolehubah super global, tetapi jelas sekali bahawa ketiga-tiga kaedah mendapatkan IP tidak boleh dipercayai sepenuhnya.
$_SERVER['REMOTE_ADDR']; // 客户端与服务器握手IP,如果使用代理则会获取到代理IP $_SERVER['HTTP_CLIENT_IP']; // 代理服务器发送的HTTP头(可伪造) $_SERVER['HTTP_X_FORWARDED_FOR']; // 用户是在哪个IP使用的代理(可伪造)
Jika nama domain belum diproksikan, cara yang secara amnya selamat ialah REMOTE_ADDR Jika ia adalah rangkaian luar negara, cara paling selamat ialah vendor awan menyediakan kaedah pemerolehan IP sumber yang boleh dipercayai, seperti yang. disediakan oleh Google Cloud:
Apabila tiada IP palsu muncul, X-forwarded-For biasanya ialah IP sebenar pelanggan, IP pengimbangan beban
Apabila IP palsu muncul, Google Cloud akan memalsukannya Kandungan diawalkan, formatnya
Jadi sama ada ia dipalsukan atau tidak, kita boleh memotong rentetan dengan koma dan cari X kedua terakhir- Nilai untuk dimajukan boleh digunakan untuk mendapatkan IP pelanggan sebenar.
Sudah tentu, jika vendor awan nama domain tidak memberikan maklumat nama domain yang serupa, kami tidak boleh mendapatkannya melalui pembolehubah super global.
Apabila vendor awan nama domain tidak memberikan maklumat IP sumber permintaan yang sepadan, kami juga boleh merundingkan mekanisme pengesahan melalui interaksi pelayan.
Serupa: Tambahkan maklumat IP sumber pada pengepala permintaan HTTP untuk pertimbangan Memandangkan ia adalah proses komunikasi antara pelayan, pemalsu tidak dapat mengetahui kandungan maklumat khusus pemalsuan, jadi biasanya interaksi sedemikian boleh dipercayai.
Proses logik penghakiman
Pelayan A: Tambahkan pembolehubah MY_REALIP_c32fsjk234 => "1.2.3.4" pada pengepala permintaan HTTP Pada masa ini, sila ambil perhatian bahawa pembolehubah nama tidak boleh terlalu besar. Sebaik-baiknya kedua-dua pihak bersetuju dengan kunci rawak sebagai nama pembolehubah, serupa dengan MY_REALIP_c32fsjk234
Menerima peminta B: Gunakan $_SERVER['MY_REALIP_c32fsjk234'] untuk menentukan sama ada pengepala permintaan mengandungi pembolehubah MY_REALIP_c32fsjk234 Jika ya, dapatkan IP yang sepadan sebagai IP sebenar.
Pautan asal: https://blog.csdn.net/panguangyuu/article/details/122211682
Bacaan yang disyorkan:
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan IP sebenar dengan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!