Old Users Notifier – bezpieczne zarządzanie nieaktywnymi użytkownikami WordPress
Zarządzanie użytkownikami to jeden z najczęściej pomijanych obszarów bezpieczeństwa WordPress. Konta, które nie logowały się od miesięcy lub lat, mogą stanowić realne zagrożenie dla stabilności i bezpieczeństwa serwisu.
Właśnie z tego powodu powstała wtyczka Old Users Notifier.
Dlaczego monitorowanie nieaktywnych użytkowników jest ważne
WordPress domyślnie nie przechowuje daty ostatniego logowania użytkownika. Administrator nie ma więc możliwości oceny realnej aktywności kont.
Nieaktywne konta to:
- potencjalny wektor ataku brute force
- możliwość przejęcia zapomnianego konta
- zbędne dane zwiększające rozmiar bazy
- ryzyko podczas audytów bezpieczeństwa
- zwiększona powierzchnia ataku
W środowiskach WooCommerce, LMS czy systemach członkowskich problem skaluje się bardzo szybko.
Jak działa wtyczka
Wtyczka wykorzystuje oficjalny hook WordPress wp_login. Przy każdym logowaniu zapisywana jest data w user meta (_oun_last_login).
Podczas pierwszej aktywacji wykonywana jest migracja, która przypisuje istniejącym użytkownikom datę rejestracji jako punkt odniesienia. Dzięki temu unikamy błędnej klasyfikacji.
Codzienny mechanizm WP-Cron:
- oblicza nieaktywnych użytkowników
- zapisuje wynik w transient
- czyści puste rekordy meta
Panel administracyjny działa bez REST API. Dane pobierane są przez admin-ajax.php, zabezpieczony nonce i kontrolą uprawnień.
Administrator może:
- określić próg nieaktywności (np. 180 dni)
- filtrować użytkowników po roli
- sortować wyniki po dacie
- wykonywać operacje zbiorcze
- przeglądać dane w dedykowanym panelu
Hardening bezpieczeństwa
Projekt został przygotowany zgodnie z wytycznymi WordPress Plugin Review Team oraz zasadami OWASP.
- Sanitizacja danych wejściowych
Każde wejście z formularza i AJAX jest przetwarzane przez funkcje takie jak sanitize_text_field() lub absint(). Eliminuje to możliwość wstrzyknięcia danych.
- Escapowanie danych wyjściowych
W panelu administracyjnym stosowane są esc_html() i pokrewne funkcje. Chroni to przed XSS.
- Ochrona przed CSRF
Endpoint AJAX wykorzystuje check_ajax_referer(). Każde żądanie wymaga poprawnego nonce.
- Kontrola uprawnień
Dostęp do funkcji administracyjnych wymaga current_user_can(’manage_options’). Zapobiega to eskalacji uprawnień.
- Bezpieczne operacje na bazie
Wtyczka korzysta z oficjalnych API WordPress. Zapytania SQL wykorzystują $wpdb->prepare().
- Brak zewnętrznych połączeń
Wtyczka nie wysyła danych do zewnętrznych serwerów, nie zawiera telemetrii ani śledzenia.
Skalowalność
Dla standardowych instalacji wykorzystanie meta_query jest wystarczające.
Dla instalacji enterprise (100k+ użytkowników) rekomendowana jest dedykowana tabela z indeksem na kolumnie DATETIME.
Podsumowanie
Old Users Notifier został zaprojektowany zgodnie z zasadą minimalnego zaufania. Każda operacja wymaga autoryzacji, każde wejście jest filtrowane, a powierzchnia ataku została ograniczona poprzez brak REST API i brak zewnętrznych integracji.
Leave a Reply