நீங்கள் ஒரு “Last Login” பிளகினை (plugin) நிறுவும்போது, உங்கள் WordPress பயனர்கள் (Users) திரை திடீரென்று ஒழுங்கமைக்கப்பட்டதாகத் தோன்றினால், அந்தத் தெளிவு உங்களை ஏமாற்றுகிறது. அந்தத் தேதிகள் அதிகாரப்பூர்வமானவை போலத் தோன்றும். அவற்றை நீங்கள் வரிசைப்படுத்தலாம். அவை உறுதியான உண்மைகள் போலத் தெரியும். ஆனால் அவை அப்படி இல்லை. WordPress ஒருபோதும் இயல்பான (native) கடைசி-நுழைவுத் தேதியைச் சேமித்ததில்லை, மேலும் அந்தத் தூணில் உள்ள ஒவ்வொரு மதிப்பும் ஒரு தேர்ந்தெடுக்கப்பட்ட நினைவாற்றலின் (selective memory) விளைவே ஆகும்.

இல்லாத ஒரு வரலாறு

WordPress கணக்குகளை ஒரு நேரடியான பயனர்கள் அட்டவணையில் (users table) வைத்திருக்கிறது. இது பெயர்கள், மின்னஞ்சல்கள், கடவுச்சொல் ஹாஷ்கள் (password hashes) மற்றும் பதிவுத் தேதிகளைச் சேமிக்கிறது. ஒருவர் கடைசியாக எப்போது அங்கீகரிக்கப்பட்டார் (authenticated) என்பதைப் பதிவு செய்யும் எந்த ஒரு புலமும் (field) அங்கு இல்லை என்பது குறிப்பிடத்தக்கது. இது எப்போதும் இருந்தே வருகிறது.

இந்த இடைவெளியை நிரப்ப நீங்கள் ஒரு பிளகினை நிறுவும்போது, அது லாகின் (login) செயல்முறையுடன் இணைந்து பயனர் மெட்டாடேட்டாவிற்கு (user metadata) ஒரு நேர முத்திரையை (timestamp) எழுதுகிறது. அதுதான் முழுமையான வழிமுறை. அது உங்கள் சர்வர் பதிவுகளில் (server logs) பின்னோக்கிச் சென்று பழைய அமர்வுகளை (sessions) மீண்டும் உருவாக்காது. நீங்கள் அதைச் செயல்படுத்திய தருணத்திலிருந்து கண்காணிப்பதைத் தொடங்கும்.

ஐந்து ஆண்டுகளாக இயங்கி வரும் ஒரு இணையதளத்தை கற்பனை செய்து பாருங்கள். அந்த காலக்கட்டத்தில் நூற்றுக்கணக்கான ஆசிரியர்கள், சந்தாதாரர்கள் மற்றும் ஒப்பந்ததாரர்கள் லாகின் செய்திருப்பார்கள். நீங்கள் ஒரு செவ்வாய்க்கிழமை மதியம் ஒரு கண்காணிப்பு பிளகினை நிறுவுகிறீர்கள். புதன்கிழமை காலை, ஒரு மூத்த ஆசிரியர் லாகின் செய்கிறார். பிளகின் அந்த நேரம் மற்றும் தேதியைப் பதிவு செய்கிறது. ஆனால் உங்கள் நிர்வாகக் கணக்கு (admin account) எதையும் காட்டாது, ஏனெனில் நீங்கள் பிளகினை நிறுவியது முதல் லாகின் செய்யவில்லை. 2021-ஆம் ஆண்டைச் சேர்ந்த ஒரு பழைய ஃப்ரீலான்ஸர் கணக்கும் எதையும் காட்டாது. அந்தத் தூண் (column), நீங்கள் இருவரும் இணையதளத்தைத் தொடவே இல்லை என்பது போலக் காட்டும். உண்மையில், அந்தப் பதிவிற்கு கடந்த காலம் என்பதே இல்லை. தரவு இல்லாததை, அது இல்லை என்பதற்கான ஆதாரமாக அது கருதுகிறது; அணுகலை நீங்கள் நிர்வகிக்கும்போது இது ஒரு ஆபத்தான அனுமானம்.

அந்தத் தூண் உங்களை ஏமாற்றும் மூன்று வழிகள்

பிளகின் இயங்கத் தொடங்கியதும், காணாமல் போன வரலாற்றிலிருந்து தற்போதைய கால அறிக்கையில் ஏற்படும் பிழையாக அந்த மாயை மாறுகிறது. இதில் மூன்று குறிப்பிட்ட பொறிகள் உள்ளன.

இது அங்கீகாரத்தைக் கண்காணிக்கிறது, செயல்பாட்டைக் அல்ல

ஒரு பயனர் WordPress லாகின் திரையில் “Remember Me” என்பதைத் தேர்ந்தெடுக்கும்போது, உலாவியானது (browser) பதினான்கு நாட்கள் வரை செல்லுபடியாகும் ஒரு அங்கீகாரக் குக்கீயைப் (authentication cookie) பெறுகிறது. அந்த காலக்கட்டத்தில், பயனர் கடவுச்சொல்லை மீண்டும் தட்டச்சு செய்யாமலேயே டேஷ்போர்டைத் திறக்கலாம், பதிவுகளை வெளியிடலாம், கருத்துகளைக் கண்காணிக்கலாம் மற்றும் அமைப்புகளைப் புதுப்பிக்கலாம். அவர்களின் அமர்வு (session) உயிர்ப்புடன் மற்றும் செயல்பாட்டில் உள்ளது.

இருப்பினும், பெரும்பாலான கடைசி-நுழைவு பிளகின்கள் wp_login என்ற செயலைக் (action) கவனிக்கின்றன. அந்தச் செயல் படிவத்தின் (form) மூலம் சான்றுகள் (credentials) சமர்ப்பிக்கப்படும்போது மட்டுமே நிகழும், ஏற்கனவே உள்ள அமர்வு புதுப்பிக்கப்படும்போது அல்ல. எனவே உங்கள் ஆசிரியர் திங்கட்கிழமை காலை லாகின் செய்து, உலாவியின் அமர்வை உயிர்ப்புடன் வைத்துக்கொண்டு, அடுத்த இரண்டு வாரங்கள் முழுவதும் நிர்வாகப் பகுதியில் வேலை செய்யலாம். அந்தத் தூண் இன்னும் பதினான்கு நாட்களுக்கு முந்தையது என்றே காட்டும். அந்த நேர முத்திரையை அடிப்படையாகக் கொண்ட ஒரு பாதுகாப்பு ஆய்வு, அந்த கணக்கை செயலற்றது (dormant) என்று அடையாளப்படுத்தும். ஆனால் அது உண்மையில் செயலற்றது அல்ல. நீங்கள் ஒரு கடவுச்சொல் எப்போது தட்டச்சு செய்யப்பட்டது என்பதைப் பார்க்கிறீர்கள், ஒரு மனிதன் கடைசியாக உங்கள் வீட்டிற்குள் எப்போது இருந்தான் என்பதை அல்ல.

தணிக்கையின் போது இது செயலற்ற கணக்குகளை மறைக்கிறது

பெரும்பாலான பிளகின்கள் பயனர்கள் அட்டவணையை (users table) usermeta அட்டவணையுடன் இணைப்பதன் மூலம் வரிசைப்படுத்தக்கூடிய தூணினைச் செயல்படுத்துகின்றன. கட்டமைப்பைப் பொறுத்தவரை, இது அர்த்தமுள்ளதே. ஆனால் நடைமுறையில், இது ஒரு தெரிவுத் தெளிவுப் பிழையை (visibility bug) உருவாக்குகிறது.

நீங்கள் பிளகினைச் செயல்படுத்தியதிலிருந்து ஒரு பயனர் ஒருபோதும் அங்கீகரிக்கப்படவில்லை என்றால், usermeta-வில் அந்தத் தரவுக்கான வரிசை (row) இருக்காது. உங்கள் மிகவும் பழைய கணக்குகளைக் கண்டறிய “Last Login” மூலம் பயனர் பட்டியலை வரிசைப்படுத்தும்போது, மெட்டாடேட்டா இல்லாத பயனர்களை அடிப்படையான வினவல் (query) பெரும்பாலும் விலக்கிவிடும். அவர்கள் வரிசைப்படுத்தப்பட்ட பார்வையில் இருந்து முற்றிலும் மறைந்துவிடுவார்கள்.

நீங்கள் ஒரு சுத்திகரிப்புத் தணிக்கையை (cleanup audit) நடத்துகிறீர்கள். நீங்கள் இறங்கு வரிசையில் (descending) வரிசைப்படுத்தி, பழைய தேதிகளுடன் நாற்பது பயனர்களைப் பார்க்கிறீர்கள். நீங்கள் ஒரு குழுவை முடக்குவதற்குத் துணிச்சலாகத் தேர்ந்தெடுக்கிறீர்கள். ஆனால், ஒருமுறை கூட கண்காணிப்பானைத் (tracker) தூண்டாததால், எட்டு மாதங்களாக அமைதியாக இருக்கும் பத்து ஒப்பந்ததாரர் கணக்குகளை நீங்கள் பார்க்கவே இல்லை. அந்த கணக்குகள் வரிசைப்படுத்தப்பட்ட பட்டியலில் தோன்றவில்லை, எனவே அவை உங்கள் முடிவுகளிலும் தோன்றவில்லை. உங்கள் தணிக்கை அதன் சொந்தக் கண்டுபிடிப்புகளையே நீக்குகிறது. உறுப்பினர் தளங்கள் (membership sites), இ-லேர்னிங் தளங்கள் அல்லது மல்டிசைட் நெட்வொர்க்குகளில், இது குறிப்பாகக் கவலையளிப்பதாகும், ஏனெனில் செயலற்ற கணக்குகளையே தாக்குபவர்கள் (attackers) முதலில் குறிவைப்பார்கள்.

தரவு பயனில்லாத போது மட்டுமே இருக்கும்

இதில் ஒரு அமைதியான முரண் உள்ளது. WordPress கோர் (core) பயனர் அமர்வுகள் பற்றி ஏதோ ஒன்றை அறியும். ஒருவர் லாகின் செய்யும்போது, அமைப்பு அமர்வு டோக்கன்களை (session tokens) உருவாக்கி அவற்றை பயனர் மெட்டாடேட்டாவில் சேமிக்கிறது. ஒரு நிர்வாகி (administrator) செயல்பாட்டில் உள்ள அமர்வுகளைப் பார்த்து அவற்றை முடிவுக்குக் கொண்டுவர முடியும். ஆனால் அந்த அறிவு முற்றிலும் நேரடித் தரவு சார்ந்தது. பயனர் லாக்அவுட் (logout) செய்தவுடன் அல்லது அமர்வு தானாகவே காலாவதியாகும் போது, WordPress அந்த டோக்கனை நீக்கிவிடும். அந்தப் பதிவு மறைந்துவிடும்.

இப்போது யார் ஆன்லைனில் இருக்கிறார்கள் என்பதை உங்களால் பார்க்க முடியும். நேற்று காலை பத்து மணிக்கு யார் ஆன்லைனில் இருந்தார்கள் என்பதை உங்களால் எளிதாகப் பார்க்க முடியாது. இந்தக் கட்டமைப்பு நிகழ்நேர அமர்வு மேலாண்மைக்காக (real-time session management) உருவாக்கப்பட்டது, வரலாற்றுத் தரவுகளுக்காக அல்ல.