जर तुम्ही “Last Login” प्लगइन इंस्टॉल केले आणि अचानक तुमचा WordPress Users स्क्रीन व्यवस्थित दिसू लागला, तर ते नीटनेटकेपण तुम्हाला फसवतेय. त्या तारखा अधिकृत वाटतात. तुम्ही त्या सॉर्ट करू शकता. त्या ठोस तथ्य असल्यासारख्या वाटतात. पण तसे नाहीत. WordPress ने कधीही मूळ (native) last-login तारीख साठवली नाही आणि त्या कॉलममधील प्रत्येक व्हॅल्यू ही केवळ निवडक स्मृतीचा (selective memory) एक परिणाम आहे.

जी इतिहास कधीच नव्हता

WordPress खाती एका साध्या users table मध्ये ठेवते. ते नावे, ईमेल, पासवर्ड हॅश आणि नोंदणीच्या तारखा साठवते. पण कोणी शेवटचे कधी ऑथेंटिकेट (authenticate) केले, याची नोंद ठेवणारे कोणतेही फील्ड यात स्पष्टपणे गहाळ आहे. हे नेहमीच असे राहिले आहे.

ही उणीव भरून काढण्यासाठी जेव्हा तुम्ही प्लगइन इंस्टॉल करता, तेव्हा ते लॉगिन प्रक्रियेला जोडले जाते (hooks into) आणि युजर मेटाडेटा (user metadata) मध्ये एक टाइमस्टॅम्प (timestamp) लिहिते. हीच संपूर्ण यंत्रणा आहे. ते तुमच्या सर्व्हर लॉग्समध्ये मागे जाऊन जुने डेटा शोधत नाही किंवा मागील सेशन्स पुन्हा तयार करत नाही. तुम्ही ते सक्रिय केल्याच्या क्षणापासून ते फक्त निरीक्षण करण्यास सुरुवात करते.

पाच वर्षांपासून कार्यरत असलेल्या एका साइटची कल्पना करा. त्या काळात शेकडो संपादक, सबस्क्रायबर्स आणि कंत्राटदारांनी लॉगिन केले आहे. तुम्ही मंगळवारी दुपारी एक ट्रॅकिंग प्लगइन इंस्टॉल करता. बुधवारी सकाळी, एक वरिष्ठ संपादक लॉगिन करतो. प्लगइन वेळ आणि तारीख नोंदवते. पण तुमच्या स्वतःच्या ॲडमिन अकाउंटमध्ये काहीही दिसत नाही, कारण तुम्ही प्लगइन इंस्टॉल केल्यापासून लॉगिन केलेले नाही. २०२१ मधील एक जुने फ्रीलान्सर अकाउंट देखील काहीच दाखवत नाही. त्या कॉलममुळे असे वाटते की तुमच्यापैकी कोणीही साइटला कधीही स्पर्श केलेला नाही. प्रत्यक्षात, त्या रेकॉर्डिंगला कोणताही भूतकाळ नव्हता. ते डेटाची अनुपस्थिती म्हणजे ती क्रिया कधीच घडली नाही, असा निष्कर्ष काढते, जे ॲक्सेस मॅनेजमेंट करताना एक धोकादायक गृहीतक आहे.

तो कॉलम तुम्हाला तीन प्रकारे दिशाभूल करतो

एकदा प्लगइन सुरू झाले की, तो भ्रम गहाळ इतिहासाकडून चुकीच्या वर्तमानकाळातील रिपोर्टिंगकडे वळतो. यात तीन विशिष्ट सापळे आहेत.

ते ऑथेंटिकेशन ट्रॅक करते, ॲक्टिव्हिटी नाही

जेव्हा एखादा युजर WordPress लॉगिन स्क्रीनवर “Remember Me” वर क्लिक करतो, तेव्हा ब्राउझरला एक ऑथेंटिकेशन कुकी (authentication cookie) मिळते जी चौदा दिवसांपर्यंत वैध राहू शकते. त्या कालावधीत, युजर पासवर्ड पुन्हा न टाईप करता डॅशबोर्ड उघडू शकतो, पोस्ट प्रकाशित करू शकतो, कमेंट्स मॉडरेट करू शकतो आणि सेटिंग्ज अपडेट करू शकतो. त्यांचा सेशन (session) जिवंत आणि सक्रिय असतो.

मात्र, बहुतेक last-login प्लगइन्स wp_login ॲक्शनवर लक्ष ठेवतात. ही ॲक्शन तेव्हाच कार्यान्वित होते जेव्हा फॉर्मद्वारे क्रेडेंशियल्स (credentials) सबमिट केले जातात, अस्तित्वात असलेला सेशन रिफ्रेश झाल्यावर नाही. त्यामुळे तुमचा संपादक सोमवारी सकाळी लॉगिन करू शकतो, ब्राउझर सेशन जिवंत ठेवू शकतो आणि सलग दोन आठवडे दररोज ॲडमिन एरियामध्ये काम करू शकतो. तरीही कॉलममध्ये चौदा दिवसांपूर्वीची तारीखच दिसेल. त्या टाइमस्टॅम्पवर आधारित सुरक्षा तपासणी (security review) त्या अकाउंटला 'डॉर्मंट' (dormant - निष्क्रिय) म्हणून चिन्हांकित करेल. पण ते अकाउंट अजिबात निष्क्रिय नसते. तुम्ही फक्त पासवर्ड कधी टाईप केला होता ते पाहत आहात, एखादी व्यक्ती तुमच्या साइटवर शेवटची कधी होती ते नाही.

ते ऑडिट दरम्यान निष्क्रिय अकाउंट्स लपवते

बहुतेक प्लगइन्स users table ला usermeta table शी जोडून सॉर्ट करण्यायोग्य कॉलम तयार करतात. संरचनेच्या दृष्टीने हे योग्य आहे, पण व्यावहारिकदृष्ट्या यामुळे एक व्हिजिबिलिटी बग (visibility bug) निर्माण होतो.

जर तुम्ही प्लगइन सक्रिय केल्यापासून एखाद्या युजरने कधीही ऑथेंटिकेशन केले नसेल, तर usermeta मध्ये त्या की (key) साठी कोणतीही रो (row) नसते. जेव्हा तुम्ही तुमचे सर्वात जुने अकाउंट्स शोधण्यासाठी “Last Login” नुसार युजर लिस्ट सॉर्ट करता, तेव्हा मूळ क्वेरी (query) अनेकदा ज्या युजर्सकडे मेटाडेटा नाही त्यांना वगळते. ते सॉर्ट केलेल्या व्ह्यूमधून पूर्णपणे गायब होतात.

तुम्ही क्लिनअप ऑडिट (cleanup audit) करता. तुम्ही उतरत्या क्रमाने (descending) सॉर्ट करता आणि वाढत्या जुन्या तारखांसह चाळीस युजर्स पाहता. तुम्ही आत्मविश्वासाने काही अकाउंट्स डिसेबल करण्यासाठी निवडता. पण तुम्ही ते दहा कंत्राटदार अकाउंट्स कधीच पाहिले नाहीत जे गेल्या आठ महिन्यांपासून शांत आहेत, कारण त्यांनी एकदाही ट्रॅकर सक्रिय केला नाही. ती अकाउंट्स सॉर्ट केलेल्या लिस्टमध्ये दिसत नाहीत, त्यामुळे तुमच्या निष्कर्षातही ती येत नाहीत. तुमचे ऑडिट स्वतःचेच निष्कर्ष नष्ट करते. मेंबरशिप साइट्स, ई-लर्निंग प्लॅटफॉर्म किंवा मल्टीसाइट नेटवर्क्सवर हे विशेषतः त्रासदायक आहे, कारण हल्लेखोर (attackers) अनेकदा निष्क्रिय अकाउंट्सनाच प्रथम लक्ष्य करतात.

डेटा फक्त तेव्हाच अस्तित्वात असतो जेव्हा तो निरुपयोगी असतो

यात एक उपरोधिक सत्य आहे. WordPress कोरला युजर सेशन्सबद्दल माहिती असते. जेव्हा कोणी लॉगिन करते, तेव्हा सिस्टम सेशन टोकन्स (session tokens) तयार करते आणि ते युजर मेटाडेटा मध्ये साठवते. ॲडमिनिस्ट्रेटर सक्रिय सेशन्स पाहू शकतो आणि ते समाप्त (terminate) करू शकतो. पण ही माहिती केवळ 'लाईव्ह' (live) असते. ज्या क्षणी युजर लॉगआउटवर क्लिक करतो किंवा सेशन आपोआप संपते, WordPress तो टोकन डिलीट करते. तो रेकॉर्ड नाहीसा होतो.

तुम्ही सध्या कोण ऑनलाइन आहे हे पाहू शकता. पण काल सकाळी दहा वाजता कोण ऑनलाइन होते हे तुम्ही सहज पाहू शकत नाही. ही आर्किटेक्चर रिअल-टाइम सेशन मॅनेजमेंटसाठी बनवली गेली आहे, ऐतिहासिक माहितीसाठी नाही.