ನೀವು ಒಂದು “Last Login” ಪ್ಲಗಿನ್ ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿದಾಗ ಮತ್ತು ಇದ್ದಕ್ಕಿದ್ದಂತೆ ನಿಮ್ಮ WordPress Users ಸ್ಕ್ರೀನ್ ಸುಸಜ್ಜಿತವಾಗಿ ಕಂಡರೆ, ಆ ಅಚ್ಚುಕಟ್ಟುತನವು ನಿಮ್ಮನ್ನು ವಂಚಿಸುತ್ತಿದೆ. ಆ ದಿನಾಂಕಗಳು ಅಧಿಕೃತವಾಗಿ ಕಾಣಿಸಬಹುದು. ನೀವು ಅವುಗಳನ್ನು ವಿಂಗಡಿಸಬಹುದು (sort). ಅವು ಕಠಿಣ ಸತ್ಯಗಳಂತೆ ಕಾಣುತ್ತವೆ. ಆದರೆ ಅವು ಹಾಗಲ್ಲ. WordPress ಎಂದಿಗೂ ತನ್ನ ಮೂಲ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ (native) last-login ದಿನಾಂಕವನ್ನು ಸಂಗ್ರಹಿಸಿಲ್ಲ, ಮತ್ತು ಆ ಕಾಲಂನಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಮೌಲ್ಯವು ಕೇವಲ ಆಯ್ದ ನೆನಪುಗಳ ಒಂದು ಕೃತಕ ದಾಖಲೆಯಾಗಿದೆ.
ಎಂದಿಗೂ ಇರದ ಇತಿಹಾಸ
WordPress ಖಾತೆಗಳನ್ನು ಸರಳವಾದ users table ನಲ್ಲಿ ಇರಿಸುತ್ತದೆ. ಇದು ಹೆಸರುಗಳು, ಇಮೇಲ್ಗಳು, ಪಾಸ್ವರ್ಡ್ ಹ್ಯಾಶ್ಗಳು ಮತ್ತು ನೋಂದಣಿ ದಿನಾಂಕಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ. ಯಾರಾದರೂ ಕೊನೆಯ ಬಾರಿ ಯಾವಾಗ ಲಾಗಿನ್ ಆಗಿದ್ದಾರೆ (authenticated) ಎಂಬುದನ್ನು ದಾಖಲಿಸುವ ಯಾವುದೇ ಫೀಲ್ಡ್ ಇಲ್ಲದಿರುವುದು ಗಮನಾರ್ಹವಾಗಿದೆ. ಇದು ಯಾವಾಗಲೂ ಹೀಗೆಯೇ ಇತ್ತು.
ಈ ಕೊರತೆಯನ್ನು ತುಂಬಲು ನೀವು ಪ್ಲಗಿನ್ ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿದಾಗ, ಅದು ಲಾಗಿನ್ ಪ್ರಕ್ರಿಯೆಗೆ ಅಂಟಿಕೊಳ್ಳುತ್ತದೆ (hooks) ಮತ್ತು user metadata ಗೆ ಒಂದು timestamp ಅನ್ನು ಬರೆಯುತ್ತದೆ. ಇಡೀ ಕಾರ್ಯವಿಧಾನವಷ್ಟೇ ಇದು. ಇದು ನಿಮ್ಮ ಸರ್ವರ್ ಲಾಗ್ಗಳನ್ನು ಹಿಂದಕ್ಕೆ ನೋಡುವುದಿಲ್ಲ ಅಥವಾ ಹಿಂದಿನ ಸೆಷನ್ಗಳನ್ನು ಮರುನಿರ್ಮಿಸುವುದಿಲ್ಲ. ನೀವು ಅದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದ ಕ್ಷಣದಿಂದ ಅದು ಕೇವಲ ಗಮನಿಸಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ.
ಐದು ವರ್ಷಗಳಿಂದ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿರುವ ಸೈಟ್ ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಆ ಅವಧಿಯಲ್ಲಿ ನೂರಾರು ಎಡಿಟರ್ಗಳು, ಸಬ್ಸ್ಕ್ರೈಬರ್ಗಳು ಮತ್ತು ಕಾಂಟ್ರಾಕ್ಟರ್ಗಳು ಲಾಗಿನ್ ಆಗಿದ್ದಾರೆ. ನೀವು ಒಂದು ಮಂಗಳವಾರ ಮಧ್ಯಾಹ್ನ ಟ್ರ್ಯಾಕಿಂಗ್ ಪ್ಲಗಿನ್ ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡುತ್ತೀರಿ. ಬುಧವಾರ ಬೆಳಿಗ್ಗೆ, ಒಬ್ಬ ಹಿರಿಯ ಎಡಿಟರ್ ಲಾಗಿನ್ ಆಗುತ್ತಾರೆ. ಪ್ಲಗಿನ್ ಸಮಯ ಮತ್ತು ದಿನಾಂಕವನ್ನು ದಾಖಲಿಸುತ್ತದೆ. ಆದರೆ ನಿಮ್ಮ ಸ್ವಂತ ಅಡ್ಮಿನ್ ಖಾತೆಯಲ್ಲಿ ಏನೂ ತೋರಿಸುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ನೀವು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿದ ನಂತರ ಲಾಗಿನ್ ಆಗಿಲ್ಲ. 2021 ರ ಹಳೆಯ ಫ್ರೀಲ್ಯಾನ್ಸರ್ ಖಾತೆಯೂ ಏನನ್ನೂ ತೋರಿಸುವುದಿಲ್ಲ. ಆ ಕಾಲಂ ನೋಡಿದಾಗ ನೀವು ಇಬ್ಬರೂ ಎಂದಿಗೂ ಸೈಟ್ ಅನ್ನು ಬಳಸಿಲ್ಲ ಎಂಬಂತೆ ಕಾಣಿಸುತ್ತದೆ. ವಾಸ್ತವದಲ್ಲಿ, ಆ ದಾಖಲಾತಿಯು ಕೇವಲ ಇತ್ತೀಚಿನ ಘಟನೆಗಳಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆಯೇ ಹೊರತು ಹಿಂದಿನ ಇತಿಹಾಸವನ್ನು ಹೊಂದಿಲ್ಲ. ಡೇಟಾ ಇಲ್ಲದಿರುವುದನ್ನು, ಅಲ್ಲಿ ಏನೂ ಇಲ್ಲ ಎಂಬುದಕ್ಕೆ ಪುರಾವೆಯೆಂದು ಇದು ಪರಿಗಣಿಸುತ್ತದೆ; ಪ್ರವೇಶವನ್ನು (access) ನಿರ್ವಹಿಸುವಾಗ ಇದು ಅಪಾಯಕಾರಿ ಊಹೆಯಾಗಿದೆ.
ಆ ಕಾಲಂ ನಿಮ್ಮನ್ನು ತಪ್ಪುದಾರಿಗೆಳೆಯುವ ಮೂರು ಮಾರ್ಗಗಳು
ಒಮ್ಮೆ ಪ್ಲಗಿನ್ ಚಾಲನೆಯಲ್ಲಿದ್ದಾಗ, ಕಾಣ disappearing ಇತಿಹಾಸದ ಬದಲಾಗಿ ತಪ್ಪಾದ ಪ್ರಸ್ತುತ ವರದಿಯ ಭ್ರಮೆ ಉಂಟಾಗುತ್ತದೆ. ಇಲ್ಲಿ ಮೂರು ನಿರ್ದಿಷ್ಟ ಬಲೆಗಳಿವೆ.
ಇದು ಲಾಗಿನ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು (authentication) ಟ್ರ್ಯಾಕ್ ಮಾಡುತ್ತದೆ, ಚಟುವಟಿಕೆಯನ್ನು (activity) ಅಲ್ಲ
ಬಳಕೆದಾರರು WordPress ಲಾಗಿನ್ ಸ್ಕ್ರೀನ್ನಲ್ಲಿ “Remember Me” ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿದಾಗ, ಬ್ರೌಸರ್ 14 ದಿನಗಳವರೆಗೆ ಮಾನ್ಯವಾಗಿರುವ authentication cookie ಅನ್ನು ಪಡೆಯುತ್ತದೆ. ಆ ಅವಧಿಯಲ್ಲಿ, ಬಳಕೆದಾರರು ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಮತ್ತೆ ಟೈಪ್ ಮಾಡದೆಯೇ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಅನ್ನು ತೆರೆಯಬಹುದು, ಪೋಸ್ಟ್ಗಳನ್ನು ಪ್ರಕಟಿಸಬಹುದು, ಕಾಮೆಂಟ್ಗಳನ್ನು ಮಾಡರೇಟ್ ಮಾಡಬಹುದು ಮತ್ತು ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಬಹುದು. ಅವರ ಸೆಷನ್ ಸಕ್ರಿಯವಾಗಿರುತ್ತದೆ.
ಆದರೆ ಹೆಚ್ಚಿನ last-login ಪ್ಲಗಿನ್ಗಳು wp_login ಆಕ್ಷನ್ ಅನ್ನು ಮಾತ್ರ ಗಮನಿಸುತ್ತವೆ. ಆ ಆಕ್ಷನ್ ಕೇವಲ ಫಾರ್ಮ್ ಮೂಲಕ ಕ್ರೆಡೆನ್ಶಿಯಲ್ಗಳನ್ನು ಸಲ್ಲಿಸಿದಾಗ ಮಾತ್ರ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸೆಷನ್ ರಿಫ್ರೆಶ್ ಆದಾಗ ಅಲ್ಲ. ಆದ್ದರಿಂದ ನಿಮ್ಮ ಎಡಿಟರ್ ಸೋಮವಾರ ಬೆಳಿಗ್ಗೆ ಲಾಗಿನ್ ಆಗಿ, ಬ್ರೌಸರ್ ಸೆಷನ್ ಅನ್ನು ಸಕ್ರಿಯವಾಗಿಟ್ಟುಕೊಂಡು, ಪ್ರತಿ ದಿನ ಎರಡು ವಾರಗಳ ಕಾಲ ಅಡ್ಮಿನ್ ಏರಿಯಾದಲ್ಲಿ ಕೆಲಸ ಮಾಡಬಹುದು. ಆದರೂ ಕಾಲಂ ಹದಿನಾಲ್ಕು ದಿನಗಳ ಹಳೆಯದಾಗಿ ತೋರಿಸುತ್ತದೆ. ಆ ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ ಆಧಾರದ ಮೇಲೆ ಮಾಡುವ ಭದ್ರತಾ ಪರಿಶೀಲನೆಯು ಆ ಖಾತೆಯನ್ನು ಸುಪ್ತ (dormant) ಎಂದು ಗುರುತಿಸುತ್ತದೆ. ಆದರೆ ಅದು ಸುಪ್ತವಾಗಿಲ್ಲ. ನೀವು ನೋಡುತ್ತಿರುವುದು ಯಾವಾಗ ಪಾಸ್ವರ್ಡ್ ಟೈಪ್ ಮಾಡಲ್ಪಟ್ಟಿತು ಎಂಬುದನ್ನು ಮಾತ್ರವೇ ಹೊರತು, ಒಬ್ಬ ವ್ಯಕ್ತಿಯು ಕೊನೆಯ ಬಾರಿ ನಿಮ್ಮ ಸೈಟ್ಗೆ ಯಾವಾಗ ಭೇಟಿ ನೀಡಿದನು ಎಂಬುದನ್ನಲ್ಲ.
ಇದು ಆಡಿಟ್ ಸಮಯದಲ್ಲಿ ಬಳಕೆಯಿಲ್ಲದ (dormant) ಖಾತೆಗಳನ್ನು ಮರೆಮಾಚುತ್ತದೆ
ಹೆಚ್ಚಿನ ಪ್ಲಗಿನ್ಗಳು users table ಅನ್ನು usermeta table ಗೆ ಸೇರಿಸುವ ಮೂಲಕ sortable column ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತವೆ. ರಚನಾತ್ಮಕವಾಗಿ ಇದು ಸರಿಯೇ, ಆದರೆ ಪ್ರಾಯೋಗಿಕವಾಗಿ ಇದು ಒಂದು visibility bug ಅನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ.
ನೀವು ಪ್ಲಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದ ನಂತರ ಬಳಕೆದಾರರು ಎಂದಿಗೂ ಲಾಗಿನ್ ಆಗದಿದ್ದರೆ, ಆ ಕೀ (key) ಗಾಗಿ usermeta ನಲ್ಲಿ ಯಾವುದೇ ಸಾಲು ಇರುವುದಿಲ್ಲ. ನಿಮ್ಮ ಹಳೆಯ ಖಾತೆಗಳನ್ನು ಹುಡುಕಲು ನೀವು ಬಳಕೆದಾರರ ಪಟ್ಟಿಯನ್ನು “Last Login” ಮೂಲಕ ವಿಂಗಡಿಸಿದಾಗ (sort), metadata ಇಲ್ಲದ ಬಳಕೆದಾರರನ್ನು ಅಡಿಯಲ್ಲಿರುವ ಕ್ವೆರಿ (query) ಸಾಮಾನ್ಯವಾಗಿ ಹೊರಗಿಡುತ್ತದೆ. ಅವರು ವಿಂಗಡಿಸಿದ ನೋಟದಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ಮಾಯವಾಗುತ್ತಾರೆ.
ನೀವು ಕ್ಲೀನಪ್ ಆಡಿಟ್ ಮಾಡುತ್ತೀರಿ. ನೀವು ಡಿಸೆಂಡಿಂಗ್ (descending) ಕ್ರಮದಲ್ಲಿ ವಿಂಗಡಿಸಿ ಹೆಚ್ಚು ಹಳೆಯ ದಿನಾಂಕವಿರುವ ನಲವತ್ತು ಬಳಕೆದಾರರನ್ನು ನೋಡುತ್ತೀರಿ. ನೀವು ಅಂತಹ ಒಂದು ಗುಂಪನ್ನು ಡಿಸೇಬಲ್ ಮಾಡಲು ನಿರ್ಧರಿಸುತ್ತೀರಿ. ಆದರೆ ಎಂಟು ತಿಂಗಳಿನಿಂದ ಸುಮ್ಮನಿರುವ ಹತ್ತು ಕಾಂಟ್ರಾಕ್ಟರ್ ಖಾತೆಗಳನ್ನು ನೀವು ಎಂದಿಗೂ ನೋಡುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಅವರು ಟ್ರ್ಯಾಕರ್ ಅನ್ನು ಎಂದಿಗೂ ಟ್ರಿಗ್ಗರ್ ಮಾಡಿಲ್ಲ. ಆ ಖಾತೆಗಳು ವಿಂಗಡಿಸಿದ ಪಟ್ಟಿಯಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಅವು ನಿಮ್ಮ ತೀರ್ಮಾನಗಳಲ್ಲಿಯೂ ಬರುವುದಿಲ್ಲ. ನಿಮ್ಮ ಆಡಿಟ್ ತನ್ನದೇ ಆದ ಸಂಶೋಧನೆಗಳನ್ನು ತಾನೇ ಅಳಿಸಿಹಾಕುತ್ತದೆ. ಮೆಂಬರ್ಶಿಪ್ ಸೈಟ್ಗಳು, ಇ-ಲರ್ನಿಂಗ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳು ಅಥವಾ ಮಲ್ಟಿಸೈಟ್ ನೆಟ್ವರ್ಕ್ಗಳಲ್ಲಿ ಇದು ವಿಶೇಷವಾಗಿ ತೊಂದರೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಸುಪ್ತ ಖಾತೆಗಳನ್ನು ದಾಳಿಕೋರರು (attackers) ಮೊದಲು ಗುರಿಯಾಗಿಸಿಕೊಳ್ಳುತ್ತಾರೆ.
ಡೇಟಾವು ಉಪಯುಕ್ತವಲ್ಲದಿದ್ದಾಗ ಮಾತ್ರ ಅಸ್ತಿತ್ವದಲ್ಲಿರುತ್ತದೆ
ಇಲ್ಲಿ ಒಂದು ವಿಚಿತ್ರವಾದ ವ್ಯಂಗ್ಯವಿದೆ. WordPress core ಗೆ ಬಳಕೆದಾರರ ಸೆಷನ್ಗಳ ಬಗ್ಗೆ ತಿಳಿದಿದೆ. ಯಾರಾದರೂ ಲಾಗಿನ್ ಆದಾಗ, ಸಿಸ್ಟಮ್ ಸೆಷನ್ ಟೋಕನ್ಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು user metadata ನಲ್ಲಿ ಸಂಗ್ರಹಿಸುತ್ತದೆ. ಅಡ್ಮಿನಿಸ್ಟ್ರೇಟರ್ ಸಕ್ರಿಯ ಸೆಷನ್ಗಳನ್ನು ನೋಡಬಹುದು ಮತ್ತು ಅವುಗಳನ್ನು ಕೊನೆಗೊಳಿಸಬಹುದು (terminate). ಆದರೆ ಆ ಮಾಹಿತಿ ಕೇವಲ ಲೈವ್ ಆಗಿರುತ್ತದೆ. ಬಳಕೆದಾರರು ಲಾಗ್ ಔಟ್ ಮಾಡಿದ ಕ್ಷಣ ಅಥವಾ ಸೆಷನ್ ತನ್ನಷ್ಟಕ್ಕೆ ತಾನೇ ಅವಧಿ ಮುಗಿದ ತಕ್ಷಣ, WordPress ಆ ಟೋಕನ್ ಅನ್ನು ಅಳಿಸಿಹಾಕುತ್ತದೆ. ಆ ದಾಖಲೆಯು ಮಾಯವಾಗುತ್ತದೆ.
ಈಗ ಆನ್ಲೈನ್ನಲ್ಲಿ ಯಾರು ಇದ್ದಾರೆ ಎಂದು ನೀವು ನೋಡಬಹುದು. ಆದರೆ ನಿನ್ನೆ ಬೆಳಿಗ್ಗೆ ಹತ್ತು ಗಂಟೆಗೆ ಯಾರು ಆನ್ಲೈನ್ನಲ್ಲಿ ಇದ್ದರು ಎಂಬುದನ್ನು ನೀವು ಸುಲಭವಾಗಿ ನೋಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಈ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ರಿಯಲ್-ಟೈಮ್ ಸೆಷನ್ ಮ್ಯಾನೇಜ್ಮೆಂಟ್ಗಾಗಿ ನಿರ್ಮಿಸಲಾಗಿದೆಯೇ ಹೊರತು, ಐತಿಹಾಸಿಕ
