VPN orqasida PHP'ning REMOTE_ADDR qiymati aslida nima deydi
Bu veb-serveringiz bergan qiymat, tunnelga so'rov emas. So'rov yo'lini ko'rib chiqing, uni kim qayta yozishi mumkinligini tekshiring va identifikatsiyani ilovada saqlang.
Kimdir VPN foydalanuvchisi nega ilova jurnalida shlyuzga tegishli manzil bilan yoki tushlikdan keyin o'zgargan manzil bilan ko'rinishini so'raydi. Javob bu qiymat nima ekanidan boshlanadi: veb-server so'rov muhitiga qo'ygan yozuv. Bu tunnelga so'rov emas, sertifikat identifikatsiyasi ham emas va raqam bir kishiga tegishli degan va'da ham emas. Uni shu uchtadan biri sifatida o'qish turli yo'llar bilan xato ishonchli javoblar beradi.
Qiymat serverdan keladi, tunneldan emas
PHP so'rov muhitini skriptni bajargan narsadan oladi. PHP server o'zgaruvchilari ma'lumotnomasi bu yozuvlarni veb-server yaratadi deb ta'riflaydi, ularning mavjudligi esa so'rov qanday kelganiga bog'liq.
VPN buyruq satri hooki sifatida ishga tushirilgan skript butunlay boshqa bajarilish konteksti. Unda veb-so'rov, mijoz soketi va REMOTE_ADDR yo'q, shuning uchun hook ichiga ko'chirilgan veb-kod xato qiymatlar o'rniga bo'sh qiymatlar beradi. Hookning demon to'ldiradigan o'z muhiti bor va u alohida hujjatlashtirilgan. U yerda REMOTE_ADDR ga intilish hech qachon o'rnatilmagan o'zgaruvchiga intilishdir.
Ikki jurnalni taqqoslashdan oldin bu farqni yodda tuting. Balki siz sahifa so'rovini hook bilan taqqoslayotgandirsiz, bu esa umuman taqqoslash emas. Avval bajarilish kontekstini, keyin manzilni tekshiring.
Raqamga ishonishdan oldin so'rov yo'lini bosib o'ting
Bildirilgan manzil veb-server ko'rgan ulanishning peeridir. Mijoz va o'sha server orasiga biror narsa qo'ying, peer o'zgaradi. Tarjima, terminatsiya va yuklamani tenglashtirish har biri kuzatuvni foydalanuvchidan bir qadam uzoqlashtiradi.
To'rtta odatiy yo'l to'rt xil kuzatuv beradi.
| Path to the listener | What can be reported |
|---|---|
| Client routed straight to the private listener, no translation | The client's tunnel address |
| Gateway translates the source before forwarding | The gateway's translated address |
| Reverse proxy terminates the client and opens its own backend connection | The proxy's backend address |
| Load balancer in front of two proxies | Whichever hop the server treats as its peer |
Yo'lni manzil nomi, manzillar oilasi va har bir tarjima nuqtasi bilan yozib qo'ying. Bu xaritasiz to'g'ri va xato qiymat jurnal satrida bir xil ko'rinadi. Ikki satr sxema yarim kunlik bahsni tejaydi.
Almashtirish faqat sozlangan joyda bo'ladi
Server yoki freymvork mijoz manzilini ataylab almashtirishi mumkin. Apache'ning remote-IP moduli va NGINX'ning real-IP moduli buni qiladi, PHP oladigan qiymat esa bu konfiguratsiyaga va skript ishlovchisiga uzatilgan parametrlarga bog'liq.
Demak, REMOTE_ADDR har doim tegilmagan TCP peer emas. Bu server o'z siyosatini qo'llagandan keyin e'lon qilishni tanlagan peer. Bu farq qiymat dalilmi yoki bezakmi ekanini hal qiladi.
Server egasidan bu o'rnatishda qaysi maydon vakolatli ekanini va almashtirish bo'lganda asl peer qanday saqlanishini so'rang. Hech kim javob bera olmasa, jurnal hali hech narsani isbotlamaydi.
Yo'naltirish sarlavhalarini ishonch bilan o'qimang
Qo'ng'iroq qiluvchi yo'naltirish sarlavhalarini o'zi yuborishi mumkin. Vergul bilan ajratilgan birinchi yozuvni tasdiqlangan foydalanuvchi manzili deb qabul qilish ulangan har kimga ishonish qaroridir, bu esa sarlavha maqsadining teskarisi. Sarlavha zanjirni tasvirlaydi va faqat ishonchli qatlam bu zanjirga kafolat bera oladi.
Server yoki freymvorkning ishonchli proksi yordamini haqiqiy proksi zanjiri bilan sozlab ishlating va unga bu zanjirdan tashqari manbalardan kelgan qiymatlarni tashlashga ruxsat bering. Qo'lda yozilgan tahlil qiziqarli nosozliklarning ko'pchiligi yashaydigan joy.
Proksi bildirgan manzil yuqoridagi xavfsizlik devori ko'radigan paket manbasini ham o'zgartirmaydi. HTTP metama'lumotlari va tarmoq filtrlashni alohida kuzatuvlar sifatida saqlang, chunki ular turli savollarga javob beradi.
Qarorlar uchun ilova identifikatsiyasidan foydalaning
Foydalanuvchi yozuvlariga kirish uchun autentifikatsiya qilingan subyektga va ilovaning avtorizatsiya qoidalariga tayaning. Ichki manzil qayta tayinlanishi mumkin va bitta tarjima qilingan manzil yuzlab bir vaqtli foydalanuvchini ifodalashi mumkin. Bu xususiyatlarning hech birini manzil tekshiruvi tuzata olmaydi.
Agar operatsiyalar so'rovni VPN sessiyasiga bog'lashi kerak bo'lsa, kuzatilgan manzil va vaqt belgisini hujjatlashtirgan tarjima modeli bo'yicha vakolatli sessiya yozuvlari bilan birlashtiring. Bu himoya qila oladigan bog'lanish beradi; yolg'iz manzil bunday qilmaydi.
Diagnostika uchun butun server massivi o'rniga kerak bo'lgan bir necha maydonni jurnalga yozing, chunki massiv sarlavhalar va autentifikatsiya materialini olib yurishi mumkin. Foydali xulosa bu qiymat bu o'rnatishda nimani anglatishini aytadi, qaysi qiymat mijozga ko'proq o'xshashini emas.