2013-04-09 17 views
22

मैं आईपी पता लॉक करता हूं।PHP लॉक आईपी पता

क्या इसका मतलब यह है कि उपयोगकर्ता केवल उसी आईपी पते से लॉगिन कर सकता है? या उपयोगकर्ता लॉगआउट करेगा और एक नया सत्र प्राप्त करने के लिए फिर से लॉगिन करना होगा?

if (isset($_SESSION['last_ip']) === false) { 
    $_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR']; 
} 

if ($_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']){ 
    session_unset(); 
    session_destroy(); 
} 

उत्तर

13

यह कोड सत्र (लॉगआउट) को हटा देगा यदि उपयोगकर्ता का आईपी पता बदलता है।

तो उपयोगकर्ता किसी भी आईपी पते से लॉग इन कर सकता है, लेकिन यदि यह बदलता है तो लॉग आउट हो जाएगा।

यह सत्र अपहरण को रोकने के लिए काम कर सकता है, लेकिन यदि आप गतिशील आईपी पर हैं तो यह बहुत अच्छा काम नहीं करेगा क्योंकि आपका आईपी बदलता रहेगा।

+0

अगर सत्र नष्ट कर दिया, उपयोगकर्ता नया आईपी से नया सत्र पाने के लिए अगर वे –

+0

हाँ, होगा में लॉग इन करने में सक्षम हो जाएगा। – Halcyon

+0

मैंने session_regenerate_id (सत्य) जोड़ दिया है; तो ये 2 कैसे मिलकर काम करते हैं? –

8

ऐसा करता है। यदि उपयोगकर्ता का आईपी बदलता है, तो वह लॉग आउट हो जाएगा। यद्यपि एक हमलावर अभी भी आईपी की नकल कर सकता है अगर वह उसे जानता है, तो यह पूरी तरह से सुरक्षित नहीं है।

मैं यह भी सुझाव देते हैं: कैसे सत्र अपहरण को रोकने के लिए अधिक जानकारी के लिए इन पृष्ठों पर एक नजर डालें क्रिस शिफ्टलेट। सत्र अपहरण पर उनका लेख यहां पाया जा सकता:

http://shiflett.org/articles/session-hijacking

1
if (isset($_SESSION['last_ip']) === false) { 
    $_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR']; 
} 

कोड से ऊपर का मतलब है अगर सत्र "last_ip" अभी तक नहीं बनाया गया है, यह बनाया जाएगा और उपयोगकर्ता की वर्तमान आईपी के भंडार मूल्यों।

if ($_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']){ 
    session_unset(); 
    session_destroy(); 
} 

कोड से ऊपर इंगित करता है कि अगर "last_ip" के सत्र मूल्य अपने वर्तमान आईपी के बराबर नहीं है, यह सब सत्र चर (session_unset) मुक्त और एक सत्र (session_destroy) के लिए पंजीकृत सभी डेटा को नष्ट कर देगा।

चलिए वास्तविक परिदृश्य का वर्णन करते हैं।

उदा। मैं आपकी वेबसाइट तक पहुंचता हूं इसलिए पहले कोड का ब्लॉक मेरे वर्तमान आईपी स्टोर करता है। अब मेरा इंटरनेट डिस्कनेक्ट हो गया है और मैं अपने आईएसपी से पुनः कनेक्ट हूं जिसमें dhcp सक्षम है और पर नया आईपी देता है। तो यदि आपकी वेबसाइट पर फिर से जाएं, तो कोड का दूसरा ब्लॉक चेक करता है कि मेरे पास अलग-अलग आईपी है, इसलिए यह मुझे लॉग आउट करेगा।

कोड के दूसरे ब्लॉक को भी संपादित करें ताकि अगर सत्र "last_ip" अभी तक नहीं बनाया गया है, तो यह php नोटिस नहीं फेंक देगा।

if (isset($_SESSION['last_ip']) && $_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']){ 
    session_unset(); 
    session_destroy(); 
} 
संबंधित मुद्दे