Ograniczyć liczbę prób logowania bez wtyczki?
Jak chronić stronę logowania WordPress bez użycia wtyczki
English version: Limit login attempts without a plugin?
W internecie można znaleźć mnóstwo komentarzy i porad na ten temat. Ale czy to prawda?
Domyślnie WordPress zezwala na nieograniczoną liczbę prób logowania za pomocą formularza logowania, wysyłania specjalnych plików cookie, wywołań XML-RPC oraz wywołań REST API. Pozwala to na stosunkowo łatwe łamanie haseł za pomocą ataku siłowego. Obecnie hakerzy i boty nieustannie próbują zalogować się do Twojej witryny WordPress, zgadując Twoje hasło administratora i hasła innych zarejestrowanych użytkowników. Jeśli więc chcesz chronić swoją witrynę bez użycia wtyczki, potrzebujesz:
- Dobra znajomość PHP .
- Musisz mieć wystarczającą wiedzę o filtrze uwierzytelniania i akcji (wbudowanych w WordPress), aby je podłączyć. Polecam zacząć od haków takich jak „authenticate” i „wp_login_failed”.
- Śledź formularz logowania, żądania autoryzacji XML RPC i REST API, a także nie zapomnij o plikach cookie autoryzacyjnych (czy są prawidłowe?).
- Przechowuj gdzieś wszystkie próby logowania i adresy IP, aby obliczyć, kiedy i jaki adres IP należy zablokować. Polecam użycie Transient API. Serio. To najłatwiejszy sposób. Oczywiście nie masz nad tym kontroli, ale dzięki niemu możesz coś zrobić bez znajomości SQL.
- Oblicz czas pomiędzy nieudanymi próbami logowania dla danego adresu IP.
- Masz narzędzie lub kod PHP, aby zresetować którykolwiek z tych liczników i zablokowanych adresów IP klientów? Co jeśli jakiś legalny klient zostanie przypadkowo zablokowany?
Wygląda szalenie? Masz drugą opcję. Możesz poszukać w Google i pobrać fragmenty kodu z jakiegoś bloga w internecie, bez żadnej gwarancji i wsparcia.
Podsumowanie: W internecie można znaleźć mnóstwo porad, jak ograniczyć próby logowania bez użycia wtyczki. Wszystkie porady pochodzą jednak od osób, które nie wiedzą nawet, jak dokładnie działa algorytm uwierzytelniania WordPressa, w tym od miłych osób ze StackOverflow. Możesz to zrobić, jeśli naprawdę nie martwisz się o bezpieczeństwo swojej witryny, ponieważ bez umiejętności programowania w PHP i znajomości mechanizmu uwierzytelniania WordPressa nie ma możliwości, aby zrobić to poprawnie.