Jest podobny do odpowiedzi @ jptsetme, ale działa nawet wtedy, gdy ciąg zapytania jest /?dummy&author=5, a wzorzec wyszukiwania RewriteRulejest bardzo szybki: w tym celu często pojawia się przechwycenie ([0-9]*)wyrażeń regularnych. Ale nie musisz marnować pamięci na przechwytywanie, gdy nie używasz przechwyconego wyrażenia, a dopasowanie pierwszego znaku jest wystarczające, ponieważ nie chcesz akceptować author=1b.
Aktualizacja 20.04.2017
Widzę więcej „zepsutych” próśb od osób, które są nawet zbyt głupie, aby przeprowadzić prosty skan. Żądane adresy URL wyglądają następująco:
Narzędzie WPScan to zautomatyzowane narzędzie, które korzysta z przyjaznych adresów URL WordPress do określania nazw użytkowników. Przeszukuje pierwszych 10 możliwych identyfikatorów autorów i sprawdza Locationnagłówek odpowiedzi HTTP, aby znaleźć nazwę użytkownika.
Używam http://mysite.urlna przykład ...
WPScan sprawdzi http://mysite.url/?author=1. Jeśli twoja strona używa ładnych bezpośrednich linków, zwróci przekierowanie 301 z Locationnagłówkiemhttp://mysite.url/author/username . Jeśli twoja strona nie używa ładnych bezpośrednich linków, zwróci zamiast tego stan 200 (OK), więc WPScan sprawdzi kanał w poszukiwaniu ciągu „posty według nazwy użytkownika” i wyodrębni nazwę użytkownika.
Co możesz zrobić
Przede wszystkim to, że ktoś może odgadnąć twoją nazwę użytkownika, nie oznacza, że twoja strona jest niepewna. I tak naprawdę nie ma sposobu, aby uniemożliwić komuś parsowanie Twojej witryny w taki sposób.
Jednak ...
Jeśli naprawdę się tym martwisz, zaleciłbym zrobienie dwóch rzeczy:
Wyłącz ładne permalinki. Zmusi to WPScan i podobne narzędzia do analizowania zawartości witryny pod kątem nazw użytkowników zamiast polegania na adresie URL.
Zmuś użytkowników do ustawienia innego pseudonimu. W przypadku braku nazwy użytkownika w adresie URL narzędzia skanujące będą wyszukiwać „posty według nazwy użytkownika” w treści kanału / treści postu. Jeśli nie podajesz tam nazw użytkowników, nie można ich zdobyć.
Inną alternatywą jest zmiana przepisywania przez autora linku bezpośredniego. Można to zrobić na kilka sposobów, a prawdopodobnie można znaleźć również kilka na tej stronie .
Nie przetestowałem tego dokładnie, ale myślę, że lepiej jest usunąć podstawowy zasób niż próbować budować wokół niego ściany na poziomie serwera WWW. Tak więc, w terminologii WP, to powstrzymałoby go od przetwarzania zmiennych zapytań związanych z autorami.
Możesz użyć reguły przepisywania .htaccess, aby zapobiec ujawnieniu, ale powinieneś również używać pseudonimów, aby uniknąć ujawniania nazw użytkowników w parsowanej treści, jak opisano w EAMann.
Prawidłowa reguła powinna również usunąć ciąg zapytania z przepisanego adresu URL, w przeciwnym razie nadal ujawnisz nazwę użytkownika. To powinno wyglądać tak:
Na marginesie chciałem zapobiec wyliczaniu nazw użytkowników w mojej witrynie hostowanej z WP Engine, która ogranicza dostęp użytkowników do plików konfiguracyjnych nginx niskiego poziomu. Mają jednak sekcję „Reguły przekierowania” w panelu sterowania, która pozwala to osiągnąć. Po pewnym czasie udało mi się wymyślić najlepszą konfigurację:
RedirectName:// choose a description for the rewriteDomain:// you *must* select a domain; "All Domains" will *not* work here!Source:^/$
Destination:/?
Następnie musisz pokazać Advanced Settingspanel ...
Match args: author=([0-9]*)Rewrite type:301Permanent
Et voila, twoje nazwy użytkownika są bezpieczne [r]!
Moja profesjonalna opinia jako testera penetracji dla rządowej agencji ... ZAWSZEwarto utrudnić wyliczenie informacji o Twojej witrynie. Niewielu z was ma stronę internetową, która wznosi się ponad google, skrypt hakerów kiddie. Mówimy o bezpieczeństwie warstwowym, a każda warstwa dodaje czasu i złożoności do próby penetracji. Każda warstwa dodaje również do zestawu umiejętności wymaganych od hakera. Na WP dostępnych jest kilka naprawdę dobrych zapór sieciowych. Poszukaj takich, które mogą blokować adresy IP, które powtórzyły próby logowania użytkownika lub 404. Chodzi o to, aby zapora sieciowa automatycznie blokowała adresy IP, które skanują witrynę w poszukiwaniu stron, które nie istnieją lub próbują wielokrotnie logować się na Twojej stronie. Dobra funkcja obejmuje także blokowanie XSS i SQL Injection. Rozważ użycie All In One WP Security od Tips and Tricks HQ, Peter, Ruhul, Ivy.
Zamiast .htaccesstrasy inną alternatywą jest dodanie następującego kodu do motywu dziecka functions.php:
# Redirect author page to homepage
add_action('template_redirect','wpse_46469_author_page');function wpse_46469_author_page(){# If the author archive page is being accessed, redirect to homepageif( is_author()){
wp_safe_redirect( get_home_url(),301);exit;}}
Ponadto możesz zmienić domyślne linki autora, które są dodawane do nazwy użytkownika każdej strony, na coś innego (na przykład stronę główną), używając następujących czynności:
# Replace author URL with the homepage
add_filter('author_link','wpse_46469_author_link');function wpse_46469_author_link(){# Return homepage URLreturn home_url();}
Wiem, że to stary post, ale do przyszłych referencji chciałbym również dodać moje rozwiązanie. Jest to tylko fragment kodu, który można umieścić w functions.phptemacie. Zostawi wszystko na swoim miejscu i działa, nawet archiwa autora, ale zabija złe żądania wyliczeń.
Pierwszy wiersz wykrywa tylko stronę główną. Wyjaśnię dlaczego. Ta funkcja „wyliczania użytkowników” działa tylko na stronie głównej, więc nie trzeba przepisywać wszystkich adresów URL.
Następnie szukamy author= zapytania. To oczywiste.
Na koniec pokazujemy tylko oryginalną stronę bez bloków, przekierowań (301, 302) lub zakazów (403). Czy nie powinno to działać jak strona z jakimkolwiek innym bezużytecznym parametrem?
Odpowiedzi:
Proste rozwiązanie, którego używam w
.htaccess
:Jest podobny do odpowiedzi @ jptsetme, ale działa nawet wtedy, gdy ciąg zapytania jest
/?dummy&author=5
, a wzorzec wyszukiwaniaRewriteRule
jest bardzo szybki: w tym celu często pojawia się przechwycenie([0-9]*)
wyrażeń regularnych. Ale nie musisz marnować pamięci na przechwytywanie, gdy nie używasz przechwyconego wyrażenia, a dopasowanie pierwszego znaku jest wystarczające, ponieważ nie chcesz akceptowaćauthor=1b
.Aktualizacja 20.04.2017
Widzę więcej „zepsutych” próśb od osób, które są nawet zbyt głupie, aby przeprowadzić prosty skan. Żądane adresy URL wyglądają następująco:
Możesz więc rozszerzyć powyższą regułę na:
źródło
Nie możesz
Narzędzie WPScan to zautomatyzowane narzędzie, które korzysta z przyjaznych adresów URL WordPress do określania nazw użytkowników. Przeszukuje pierwszych 10 możliwych identyfikatorów autorów i sprawdza
Location
nagłówek odpowiedzi HTTP, aby znaleźć nazwę użytkownika.Używam
http://mysite.url
na przykład ...WPScan sprawdzi
http://mysite.url/?author=1
. Jeśli twoja strona używa ładnych bezpośrednich linków, zwróci przekierowanie 301 zLocation
nagłówkiemhttp://mysite.url/author/username
. Jeśli twoja strona nie używa ładnych bezpośrednich linków, zwróci zamiast tego stan 200 (OK), więc WPScan sprawdzi kanał w poszukiwaniu ciągu „posty według nazwy użytkownika” i wyodrębni nazwę użytkownika.Co możesz zrobić
Przede wszystkim to, że ktoś może odgadnąć twoją nazwę użytkownika, nie oznacza, że twoja strona jest niepewna. I tak naprawdę nie ma sposobu, aby uniemożliwić komuś parsowanie Twojej witryny w taki sposób.
Jednak ...
Jeśli naprawdę się tym martwisz, zaleciłbym zrobienie dwóch rzeczy:
Inną alternatywą jest zmiana przepisywania przez autora linku bezpośredniego. Można to zrobić na kilka sposobów, a prawdopodobnie można znaleźć również kilka na tej stronie .
źródło
Nie przetestowałem tego dokładnie, ale myślę, że lepiej jest usunąć podstawowy zasób niż próbować budować wokół niego ściany na poziomie serwera WWW. Tak więc, w terminologii WP, to powstrzymałoby go od przetwarzania zmiennych zapytań związanych z autorami.
PS zauważa, że to całkowicie zabije archiwa autora , co może, ale nie musi być odpowiednim poziomem paranoi :)
źródło
Możesz użyć reguły przepisywania .htaccess, aby zapobiec ujawnieniu, ale powinieneś również używać pseudonimów, aby uniknąć ujawniania nazw użytkowników w parsowanej treści, jak opisano w EAMann.
Poniższy blog opisuje, jak to zrobić, ale ma literówkę w regule przepisywania: http://www.question-defense.com/2012/03/20/block-wordpress-user-enumeration-secure-wordpress-against-hacking
Prawidłowa reguła powinna również usunąć ciąg zapytania z przepisanego adresu URL, w przeciwnym razie nadal ujawnisz nazwę użytkownika. To powinno wyglądać tak:
Pracuje dla nas dobrze.
źródło
Chciałem dodać, że możesz to zrobić również na Nginxie. Sprawdź:
» Blokowanie wyliczania użytkowników WordPress na nginx - www.edwidget.name
Na marginesie chciałem zapobiec wyliczaniu nazw użytkowników w mojej witrynie hostowanej z WP Engine, która ogranicza dostęp użytkowników do plików konfiguracyjnych nginx niskiego poziomu. Mają jednak sekcję „Reguły przekierowania” w panelu sterowania, która pozwala to osiągnąć. Po pewnym czasie udało mi się wymyślić najlepszą konfigurację:
Następnie musisz pokazać
Advanced Settings
panel ...Et voila, twoje nazwy użytkownika są bezpieczne [r]!
źródło
Całkowicie zablokowałem wyliczanie użytkowników z WPScan, dodając następujące elementy w htaccess
Moja profesjonalna opinia jako testera penetracji dla rządowej agencji ... ZAWSZEwarto utrudnić wyliczenie informacji o Twojej witrynie. Niewielu z was ma stronę internetową, która wznosi się ponad google, skrypt hakerów kiddie. Mówimy o bezpieczeństwie warstwowym, a każda warstwa dodaje czasu i złożoności do próby penetracji. Każda warstwa dodaje również do zestawu umiejętności wymaganych od hakera. Na WP dostępnych jest kilka naprawdę dobrych zapór sieciowych. Poszukaj takich, które mogą blokować adresy IP, które powtórzyły próby logowania użytkownika lub 404. Chodzi o to, aby zapora sieciowa automatycznie blokowała adresy IP, które skanują witrynę w poszukiwaniu stron, które nie istnieją lub próbują wielokrotnie logować się na Twojej stronie. Dobra funkcja obejmuje także blokowanie XSS i SQL Injection. Rozważ użycie All In One WP Security od Tips and Tricks HQ, Peter, Ruhul, Ivy.
źródło
Zamiast
.htaccess
trasy inną alternatywą jest dodanie następującego kodu do motywu dzieckafunctions.php
:Ponadto możesz zmienić domyślne linki autora, które są dodawane do nazwy użytkownika każdej strony, na coś innego (na przykład stronę główną), używając następujących czynności:
źródło
Wiem, że to stary post, ale do przyszłych referencji chciałbym również dodać moje rozwiązanie. Jest to tylko fragment kodu, który można umieścić w
functions.php
temacie. Zostawi wszystko na swoim miejscu i działa, nawet archiwa autora, ale zabija złe żądania wyliczeń.Co to robi:
author=1
Jeśli użyjesz permalinków, archiwa autora pozostaną taktowne. Ponadto, jeśli adres URL będzie podobny:
/dummy?author=1
wyświetli się strona dla/dummy
.Dzięki odpowiedzi Rarsta na to pytanie oraz https://perishablepress.com/stop-user-enumeration-wordpress/
źródło
Chcę opublikować własną wizję:
Pierwszy wiersz wykrywa tylko stronę główną. Wyjaśnię dlaczego. Ta funkcja „wyliczania użytkowników” działa tylko na stronie głównej, więc nie trzeba przepisywać wszystkich adresów URL.
Następnie szukamy
author=
zapytania. To oczywiste.Na koniec pokazujemy tylko oryginalną stronę bez bloków, przekierowań (301, 302) lub zakazów (403). Czy nie powinno to działać jak strona z jakimkolwiek innym bezużytecznym parametrem?
źródło