ठीक है, मेरे पास एक छोटा प्रमाणीकरण मुद्दा है। मेरी वेब सेवा उपयोगकर्ता नाम और पासवर्ड के साथ HTTP पर मेरे एपीआई से कनेक्ट करने की अनुमति देती है, लेकिन यह कनेक्शन किसी विशिष्ट आईपी पते पर भी सीमित हो सकता है।HTTP_X_FORWARDED_FOR का सही तरीके से उपयोग कैसे करें?
इसका मतलब है कि $_SERVER['REMOTE_ADDR']
गलत हो सकता है। मुझे पहले से ही पता है कि किसी भी आईपी सूचना पर कभी भरोसा नहीं किया जा सकता है - मेरे पास केवल सुरक्षा की एक और परत जोड़ने के प्रयास में प्रतिबंध है।
यह मेरी वेब सर्वर के लिए एक अनुरोध के सामान्य अवलोकन है:
clientSERVER => clientPROXY => myPROXY => mySERVER
तो इसका मतलब है कि MYSERVER बजाय ग्राहक की इस बात का MyProxy की REMOTE_ADDR
से पता चलता है और ग्राहक के वास्तविक IP भेजता है HTTP_X_FORWARDED_FOR
के रूप में।
इस पर काबू पाने के लिए, मेरी वेब सेवा में 'विश्वसनीय प्रॉक्सी' आईपी पते की एक सूची है और यदि REMOTE_ADDR
उन विश्वसनीय आईपी पते में से एक है, तो यह मेरी वेब सेवा को बताता है कि वास्तविक आईपी पता HTTP_X_FORWARDED_FOR
का मान है।
अब समस्या क्लाइंटप्रॉक्सी के साथ है। इसका मतलब है कि (अक्सर) mySERVER को HTTP_X_FORWARDED_FOR
मान मिलता है जिसमें एकाधिक आईपी पते होते हैं। HTTP_X_FORWARDED_FOR
दस्तावेज़ीकरण के अनुसार, मान आईपी पते की अल्पविराम से अलग सूची है जहां पहला आईपी वास्तविक सत्य ग्राहक का है और हर दूसरे आईपी पते प्रॉक्सी का है।
तो, यदि HTTP_X_FORWARDED_FOR
में कई मान हैं और मेरी सेवा आईपी प्रतिबंधित है, तो क्या मुझे अपनी अनुमति आईपी सूची के विरुद्ध HTTP_X_FORWARDED_FOR
का 'अंतिम' मान देखना होगा और केवल वास्तविक क्लाइंट आईपी को अनदेखा करना होगा?
मुझे लगता है कि एक सिस्टम में, जहां मुझे अनुमत आईपी पते की सूची सेट करनी है, श्वेतसूची वाला आईपी पता प्रॉक्सी का होना चाहिए, न कि प्रॉक्सी के पीछे एक आईपी (क्योंकि यह कुछ लोकलहोस्ट आईपी हो सकता है) और अक्सर बदलते हैं)।
और HTTP_CLIENT_IP
का क्या?
http : //stackoverflow.com/q/7445592/759866 – Benjamin