Opis
Raport Kontroli Zabezpieczeń analizuje 61 aspektów instalacji WordPress i przekształca odkrycia w raport z oceną. Nie zmienia żadnych ustawień, plików ani kont. Przechowuje własne wyniki w bazie danych i zapisuje jeden tymczasowy plik w katalogu uploads, który jest ponownie usuwany w tym samym żądaniu.
Raport otwiera się z pięcioma rzeczami, które warto zrobić najpierw, a nie z tabelą 61 wierszy. Każde odkrycie mówi, co zostało znalezione, dlaczego to ważne i co z tym zrobić.
Od drugiego uruchomienia strona nie otwiera się już na przycisku start, ale na przeglądzie: ocena, linia mówiąca, gdzie witryna znajdowała się przy pierwszym uruchomieniu i gdzie znajduje się dzisiaj, jeden pasek na każde zarejestrowane uruchomienie, pięć zadań do wykonania, co jest jeszcze otwarte, i co zostało rozwiązane oraz kiedy.
Każde zadanie ma przycisk, który ponownie uruchamia to jedno sprawdzenie i odpowiada w ciągu kilku sekund, więc poprawka jest potwierdzona, gdy nadal jesteś na ekranie, zamiast przy następnym pełnym przebiegu. Pojedyncze ponowne sprawdzenie nie zapisuje punktu w historii, i strona o tym informuje, ponieważ ocena złożona z kilku przebiegów nie jest oceną mierzoną w jednym.
Co otrzymujesz
- Ważona ocena od A do F, gdzie jedna niezaliczająca krytyczna kontrola nie może być ukryta przez pięćdziesiąt zaliczających drobnych
- Lista kontrolna pięciu zadań naraz, wynikająca z pilności i oceny, a nie z domysłów, gdzie następne pojawia się, gdy skończysz jedno
- Przycisk na każde zadanie, który ponownie uruchamia to pojedyncze sprawdzenie, dzięki czemu widzisz wynik poprawki w ciągu kilku sekund
- Historia ostatnich 24 uruchomień, z zachowaniem pierwszego na stałe, aby punkt początkowy pozostał widoczny
- Porównanie z poprzednim uruchomieniem: nowo niezaliczające, rozwiązane, zmienione
- Wyciszanie, które pamięta, co zostało stwierdzone w wyniku, więc zaakceptowane stwierdzenie powraca w momencie, gdy faktycznie się zmienia
- „Nieokreślone” jako rzeczywisty wynik, więc zablokowane żądanie nigdy nie jest zgłaszane jako problem i nigdy nie wpływa na ocenę
- Licznik przy pozycji menu, widżet na stronie głównej kokpitu i przypomnienie, gdy ostatnie uruchomienie ma więcej niż 30 dni
- Eksportuje jako zwykły tekst, JSON i CSV
- Polecenie WP-CLI, które generuje taką samą ocenę jak ekran
- Wyjaśnienie każdej kontroli, z możliwością wyszukiwania, bezpośrednio na stronie
Co sprawdza
Kod samego WordPressa, wtyczki i motywy. Wersja WordPressa, wersja PHP w porównaniu do opublikowanych dat końca wsparcia, automatyczne aktualizacje kodu samego WordPressa, integralność plików kodu samego WordPressa w porównaniu do oficjalnych sum kontrolnych, pliki w katalogach kodu samego WordPressa, które nie są częścią WordPressa, oczekujące aktualizacje wtyczek i motywów, nieużywane wtyczki i motywy, wtyczki, które wyglądają na porzucone, wtyczki, których lista została zamknięta, wtyczki, których autor się zmienił, wtyczki must-use i drop-ins, inne instalacje WordPressa znajdujące się obok tej.
Konfiguracja. Tryb debugowania, ujawnienie dziennika debugowania, edytor motywów i wtyczek, instalowanie kodu z kokpitu, klucze uwierzytelniające i sole, prefiks tabel, uprawnienia użytkownika bazy danych, czy harmonogram faktycznie działa, rozmiar automatycznie ładowanych opcji, wstrzyknięta treść w tabeli opcji, kopie zapasowe, ochrona logowania, polityka haseł.
Pliki i uprawnienia. Uprawnienia do wp-config.php, katalogu uploads i katalogów kodu samego WordPressa, ścieżki z możliwością zapisu dla wszystkich, pliki wykonywalne wśród mediów, czy serwer uruchamia PHP z katalogu uploads, pliki konfiguracyjne i kopii zapasowych, które serwer udostępnia, czytelne katalogi .git, .svn i .hg, zrzuty bazy danych w katalogu głównym witryny, pozostałości po przerwanych aktualizacjach, listowanie katalogów.
Konta i dostęp. Łatwe do odgadnięcia hasła, przewidywalne nazwy administratorów, ile kont posiada prawa administratora i które z nich stały się nieaktywne, role poniżej administratora posiadające uprawnienia, których nie powinny mieć, otwarta rejestracja i rola, którą przydziela, zasięg uwierzytelniania dwuskładnikowego dla każdego administratora, spis haseł aplikacji, w tym kiedy każde z nich było ostatnio używane i skąd.
Sieć i transport. HTTPS i przekierowanie z http, wygaśnięcie certyfikatu TLS i uzgodniony protokół, nagłówki bezpieczeństwa i ich jakość, a nie tylko obecność, atrybuty plików cookie, CORS, ujawnione wersje oprogramowania, przestarzałe tagi wykrywania, XML-RPC, wyliczanie użytkowników, trasy REST, które akceptują zapisy bez sprawdzania uprawnień, oraz to, czy adres klienta może zostać sfałszowany za pomocą przekazanych nagłówków.
Przejrzystość i ujawnianie informacji. Czy treść generowana przez AI posiada etykietę czytelną maszynowo i czy odwiedzający są informowani, kiedy rozmawiają z systemem AI, o co prosi artykuł 50 unijnej ustawy o AI od 2 sierpnia 2026 r. Wtyczki ujawniające informacje w katalogu są rozpoznawane po ich katalogu i po ustawieniach, które zapisują, więc wtyczka, która została zainstalowana i nigdy nie skonfigurowana, nie jest mylona z odpowiedzią. Witryna, która nie publikuje żadnych treści generowanych przez AI, nie ma nic do oznaczenia, więc ta funkcja jedynie ostrzega i ledwo wpływa na ocenę.
Czym nie jest
- Nie jest to zapora ogniowa. Nic nie blokuje i nie przechwytuje żadnych żądań.
- Nie jest to skaner złośliwego oprogramowania. Porównuje pliki kodu samego WordPressa z oficjalnymi sumami kontrolnymi i szuka wstrzykniętej treści w tabeli opcji, ale nie szuka sygnatur w kodzie wtyczek ani motywów i niczego nie usuwa.
- Nie jest to baza danych luk. Raportuje, że wtyczka jest nieaktualna, porzucona lub usunięta z listy; nie wyszukuje pojedynczych CVE.
- Nie jest to automatyczny naprawiacz. Każde odkrycie zawiera instrukcje, a ty je wykonujesz.
- Nie jest monitorem. Nic nie działa w tle, nic nie jest zaplanowane, żadna poczta nie jest wysyłana. Sprawdzenie uruchamia się, gdy je rozpoczniesz.
Dane i połączenia
Wtyczka komunikuje się z api.wordpress.org i z twoją własną witryną. Nic więcej, i nie ma telemetrii. Zobacz poniższe pytania, aby dowiedzieć się dokładnie, które punkty końcowe i co jest przechowywane lokalnie.
Kto to tworzy
CMS ADMINS utrzymuje, hostuje i zabezpiecza witryny WordPress i Drupal z Monachium. Ta wtyczka to lista kontrolna, którą sami stosujemy, zapakowana w formie produktu. Jest darmowa, pozostaje darmowa i działa tak samo, niezależnie od tego, czy kiedykolwiek się z nami skontaktujesz.
Zrzuty ekranu



Instalacja
- Zainstaluj wtyczkę z katalogu wtyczek WordPressa lub prześlij katalog do
/wp-content/plugins/security-check-report. - Włącz ją na ekranie Wtyczki.
- Otwórz „Kontrola bezpieczeństwa” w menu administratora i rozpocznij uruchomienie.
Wtyczka wymaga PHP 7.4 lub nowszego oraz WordPressa 7.0 lub nowszego. Uruchomienie kontroli wymaga uprawnienia manage_options, co na zwykłej witrynie oznacza administratora.
Najczęściej zadawane pytania
-
Czy wtyczka zmienia coś na mojej witrynie?
-
Nie. Każde sprawdzenie odczytuje stan i raportuje o nim.
Istnieje jeden wyjątek, i jest on celowy. Aby sprawdzić, czy twój serwer wykonałby plik PHP wrzucony do katalogu uploads, wtyczka musi spróbować. Zapisuje jeden plik o losowej nazwie, żąda go raz przez HTTP i usuwa w tym samym żądaniu. Procedura obsługi zamknięcia usuwa plik, nawet jeśli PHP przestanie działać w międzyczasie, a wszystko, co pozostało po wcześniejszym przerwaniu działania, jest czyszczone przed rozpoczęciem następnego.
-
Czy wysyła dane gdziekolwiek?
-
Tylko do
api.wordpress.org, do tych samych punktów końcowych, których sam WordPress używa do sprawdzania aktualizacji:https://api.wordpress.org/core/version-check/1.7/, odczytywane z informacji o aktualizacjach, które WordPress już posiada, aby poznać aktualną wersję WordPressa. Wtyczka nigdy sama nie pyta tego punktu końcowego.https://api.wordpress.org/plugins/update-check/1.1/ihttps://api.wordpress.org/themes/update-check/1.1/dla oczekujących aktualizacji, również odczytywane z tego, co WordPress już posiadahttps://api.wordpress.org/plugins/info/1.2/, aby sprawdzić, czy lista wtyczek jest nadal otwarta i kiedy została ostatnio wydana. Jest to jedyny punkt końcowy, o który wtyczka prosi bezpośrednio, a nie za pośrednictwemplugins_api(), ponieważ zamknięta lista jest serwowana jako HTTP 404, któryplugins_api()zamienia w błąd, co powoduje utratę flagi, której potrzebuje kontrola. Odpowiedź jest buforowana przez dwanaście godzin.https://api.wordpress.org/core/checksums/1.0/dla oficjalnych sum kontrolnych plików [kodu samego WordPressa]
WordPress.org polityka prywatności i warunki świadczenia usług.
Pozostałe żądania trafiają do twojej własnej witryny, ponieważ na kilka sprawdzeń można odpowiedzieć tylko z zewnątrz: czy plik jest serwowany, czy nagłówek jest wysyłany, czy katalog jest listowany. Nie ma telemetrii ani raportowania z powrotem do autora wtyczki.
Jedno z tych żądań do twojej własnej witryny nie używa WordPress HTTP API. Kontrola certyfikatu otwiera zwykłe połączenie TLS z twoją własną nazwą hosta na porcie 443, aby odczytać datę wygaśnięcia, ponieważ HTTP API nie zwraca certyfikatu. Celem jest nadal twoja własna witryna i nic jej nie opuszcza, ale
WP_HTTP_BLOCK_EXTERNALoraz filtrypre_http_requestihttp_request_argsnie mają zastosowania do tego jednego połączenia. -
Co przechowuje wtyczka?
-
Garść opcji w twojej bazie danych, wszystkie usuwane po usunięciu wtyczki:
- ostatnie uruchomienie i to poprzedzające, aby raport mógł pokazać, co się zmieniło
- historia ostatnich 24 uruchomień, każde zawierające datę, ocenę, wynik ryzyka i pojedynczy znak na kontrolę, co jest odczytywane przez wyświetlacz postępu
- które ustalenia zostały wyciszone, wraz z odciskiem palca tego, co mówiły
- punkt odniesienia zarejestrowany przy pierwszym uruchomieniu, zawierający autorów wtyczek, definicje ról oraz listę wtyczek must-use i drop-ins, dzięki czemu późniejsze uruchomienia mogą wykryć zmiany
- liczba nieudanych kontroli z ostatniego uruchomienia, aby liczba na pozycji menu nie musiała wczytywać całego uruchomienia na każdej stronie administracyjnej
- moment, w którym zgodziłeś się na uruchomienie, abyś nie był ponownie pytany przy każdej wizycie
Dwa wpisy trafiają do metadanych użytkownika. Jeden to znacznik czasu logowania na konto, ponieważ WordPress nie przechowuje własnej historii logowania, a kontrola administratora nie miałaby nic do powiedzenia na temat nieaktywnych kont. Drugi rejestruje, że ktoś wyłączył powiadomienie o przypomnieniu, co jest decyzją na osobę, a nie na witrynę. Oba są usuwane podczas deinstalacji.
-
Czy to skaner złośliwego oprogramowania czy firewall?
-
Żadne z nich. Znajduje słabości konfiguracji i ekspozycję, przez co większość witryn WordPress jest faktycznie przejmowana. Nie blokuje ruchu i nie czyści zainfekowanej witryny.
Zauważy kilka rzeczy wskazujących na kompromitację: pliki kodu samego WordPressa, które różnią się od oficjalnego wydania, pliki wykonywalne w katalogu uploads, wtyczki must-use lub drop-ins, które pojawiły się znikąd, role, które uzyskały uprawnienia administratora, wstrzyknięte skrypty w tabeli opcji. Jeśli którykolwiek z nich się pojawi, traktuj to jako punkt wyjścia do dochodzenia, a nie jako werdykt.
-
Co oznaczają oceny?
-
- A, doskonały: nic istotnego do poprawy
- B, dobry: dostępne drobne ulepszenia
- C, umiarkowany: kilka rzeczy wartych uwagi
- D, słaby: znaczące słabości, działaj wkrótce
- F, krytyczny: działaj natychmiast
-
Jak obliczana jest ocena?
-
Każde sprawdzenie ma pilność, a pilność określa, ile waży znalezisko:
- Krytyczny, waga 3.0: uwierzytelnianie, wykonanie kodu, ujawnione sekrety
- Wysoki, waga 2.0: aktualizacje, bezpieczeństwo transportu, ważna konfiguracja
- Średni, waga 1.5: nagłówki, uprawnienia, polityki
- Niski, waga 1.0: odcisk palca i dobre praktyki
Wynik to ważone ryzyko wyrażone jako procent najgorszego możliwego wyniku. Sprawdzenia, których nie można było określić, są pomijane w obu stronach tego obliczenia, więc zablokowane żądanie wychodzące nigdy nie zmienia oceny w żadnym kierunku. Nieudane krytyczne sprawdzenie obniża wynik do co najmniej D, co zapobiega uśrednianiu jednego poważnego problemu. Kilka sprawdzeń ma charakter informacyjny i nie ma żadnej wagi.
-
Dlaczego sprawdzenie mówi „Nieokreślone”?
-
Ponieważ nie można było uzyskać odpowiedzi, zazwyczaj z powodu zablokowanego żądania wychodzącego lub pliku, którego nie wolno odczytać. Celowo nie jest to traktowane jako znalezisko. Nieosiągalny punkt końcowy nic nie mówi o twojej witrynie, a zgłaszanie tego jako problemu nauczyłoby cię ignorowania raportu.
-
Ustalenie nie dotyczy mojej konfiguracji. Co teraz?
-
Wycisz to. Wtyczka ukrywa znalezisko i przechowuje odcisk palca tego, co zgłaszała. Gdy tylko treść się zmieni, na przykład pojawi się jeszcze jeden dotknięty plik, znalezisko powróci samo.
To jest różnica między zaakceptowaniem znanego stanu a ignorowaniem go, i dlatego domyślnie oferowane jest wyciszenie zamiast trwałego odrzucenia.
-
Jak często powinienem to uruchamiać?
-
Miesięcznie to rozsądna podstawa, plus uruchomienie po każdej większej zmianie: migracji, nowej wtyczce, przeniesieniu serwera. Gdy ostatnie pełne uruchomienie ma więcej niż 30 dni, powiadomienie w kokpicie o tym informuje. Możesz wyłączyć to powiadomienie na stałe i jest to jedyne przypomnienie, jakie wtyczka wysyła gdziekolwiek.
-
Co się dzieje, gdy ponownie sprawdzam pojedyncze zadanie?
-
Ta jedna kontrola uruchamia się ponownie, jej wynik zastępuje stary w zapisanym uruchomieniu, a ocena jest ponownie obliczana na podstawie tego, co jest wtedy zapisane. Zajmuje to kilka sekund, więc możesz coś naprawić i zobaczyć wynik bez przechodzenia przez 61 kontroli.
Historia jest pozostawiona bez zmian, ponieważ jedna kontrola to nie uruchomienie. Dopóki zapisane uruchomienie zawiera wyniki z więcej niż jednego przejścia, strona informuje, ile kontroli zostało ponownie sprawdzonych samodzielnie i kiedy było ostatnie pełne przejście, dzięki czemu ocena nigdy nie jest przedstawiana jako coś, czym nie jest.
-
Ile historii jest przechowywane?
-
Ostatnie 24 uruchomienia. Gdy pojawi się 25. uruchomienie, drugi najstarszy punkt jest usuwany zamiast najstarszego, dzięki czemu pierwsze uruchomienie pozostaje, a informacja o tym, gdzie witryna zaczęła, pozostaje prawdziwa. Jeden punkt zawiera datę, ocenę, wynik ryzyka i jeden znak na kontrolę, co daje kilka kilobajtów dla całej historii.
Jeśli używałeś już wcześniejszej wersji, dwa zapisane przez nią uruchomienia stają się pierwszymi dwoma punktami, dzięki czemu wyświetlacz nie jest pusty po aktualizacji.
-
Czy mogę uruchomić to z wiersza poleceń?
-
Tak, i generuje tę samą ocenę co ekran, ponieważ punktacja odbywa się w PHP tak czy inaczej.
wp security-check run for a table, `wp security-check run --format=json` for the full result, `wp security-check run --failed-only` for just what needs attention.Uruchomienie z wiersza poleceń niczego nie raportuje ani nie przechowuje. Historia, lista kontrolna i liczba na pozycji menu śledzą uruchomienia, które rozpoczynasz na ekranie.
-
Czy działa na multisite?
-
Tak. Działa na każdą witrynę: każdy, kto ma
manage_optionsna witrynie, może je tam uruchomić i widzi konta, wtyczki, motywy i opcje tej witryny.Kilka rzeczy działa inaczej w sieci, i sprawdzenia to uwzględniają. Rejestracja to ustawienie sieciowe, więc sprawdzenie rejestracji odczytuje to zamiast opcji dla poszczególnych witryn. Administratorzy sieci posiadają wszystkie uprawnienia niezależnie od ich roli na obecnej witrynie, więc sprawdzenia konta, hasła i dwuskładnikowe uwzględniają ich. Sprawdzenie prefiksu tabeli analizuje prefiks bazowy, a nie ten dla poszczególnych witryn.
Sprawdzenia dotyczące plików, uprawnień i konfiguracji serwera koniecznie zgłaszają to samo na każdej witrynie w sieci, ponieważ opisują jedną instalację. Nie ma ogólnosieciowego ekranu przeglądu.
Historia, lista kontrolna i przypomnienie również należą do pojedynczej witryny. Każda witryna w sieci zachowuje własne.
-
Czy mogę dodać własne sprawdzenia?
-
Tak.
cascr_registryfiltruje listę sprawdzeń, więc możesz dodać, usunąć lub zmienić wagę jednego.cascr_test_resultfiltruje indywidualny wynik, zanim zostanie oceniony. Sprawdzenie to wywoływalna funkcja, która zwraca jeden z czterech wyników zbudowanych przezCASCR_Result. -
Które wersje WordPressa i PHP są obsługiwane?
-
WordPress 7.0 i nowsze, PHP 7.4 do 8.5. Każde wydanie jest testowane z WordPress 7.0 i aktualną wersją, na pojedynczej witrynie i na multisite, i sprawdzane na wszystkich siedmiu gałęziach PHP pomiędzy.
-
Kto stoi za tą wtyczką i gdzie mogę zgłosić problem?
-
Jest tworzony i utrzymywany przez CMS ADMINS, agencję z Monachium, która zajmuje się instalacjami WordPress i Drupal od 2012 roku.
- Błędy i prośby o funkcje: problemy GitHub
- Pytania dotyczące znaleziska: forum wsparcia WordPress.org
- Lektura uzupełniająca: nasza dokumentacja i co robimy w kwestii bezpieczeństwa WordPressa
Jeśli sprawdzenie zgłasza coś, co uważasz za błędne, zgłoszenie problemu na GitHubie z tekstem odkrycia to najszybszy sposób na jego naprawienie. Fałszywe pozytywy są traktowane jako błędy.
Recenzje
Wtyczka nie ma jeszcze żadnej recenzji.
Kontrybutorzy i deweloperzy
„Raport kontroli bezpieczeństwa dla administratorów CMS” jest oprogramowaniem open source. Poniższe osoby miały wkład w rozwój wtyczki.
ZaangażowaniWtyczka „Raport kontroli bezpieczeństwa dla administratorów CMS” została przetłumaczona na 2 języki. Podziękuj tłumaczom za ich wkład.
Przetłumacz wtyczkę “Raport kontroli bezpieczeństwa dla administratorów CMS” na swój język.
Interesuje cię rozwój wtyczki?
Przeglądaj kod, sprawdź repozytorium SVN lub czytaj dziennik rozwoju przez RSS.
Rejestr zmian
Wydania przed 2.2.0 są wymienione w changelog.txt.
2.4.0
Dodano
- Lista kontrolna zamiast jednorazowego werdyktu. Od drugiego uruchomienia strona otwiera się na przeglądzie: ocena, gdzie witryna zaczęła i gdzie jest dzisiaj, pasek dla każdego uruchomienia, pięć rzeczy do przejrzenia, co jest nadal otwarte oraz co zostało rozwiązane i kiedy. Prowadzony trzystopniowy przewodnik pozostaje dla pierwszego uruchomienia.
- Każde zadanie zawiera przycisk, który ponownie uruchamia to jedno sprawdzenie i odpowiada w ciągu sekund. Poprawka jest potwierdzana, gdy nadal jesteś na ekranie, a następne zadanie przesuwa się w górę, zamiast czekać na następne pełne przejście.
- Historia ostatnich 24 uruchomień. Pierwsze uruchomienie jest zachowywane na stałe, tak aby linia otwarcia zawsze mogła wskazać, gdzie witryna zaczęła. Instalacja aktualizowana z wcześniejszej wersji znajduje swoje dwa zapisane uruchomienia jako pierwsze dwa punkty.
- Postęp według kategorii, tak aby było widoczne, która część witryny została załatwiona, a która nie.
- Szósty obszar, przejrzystość i ujawnianie informacji, z jednym sprawdzeniem: czy treści generowane przez AI na witrynie są oznaczone. Artykuł 50 unijnej ustawy o AI wymaga etykiety czytelnej maszynowo i powiadomienia dla chatbotów AI od 2 sierpnia 2026 roku. Wtyczki ujawniające informacje z katalogu są rozpoznawane po ich katalogu i po ustawieniach, które zapisują, a sprawdzenie tylko ostrzega, ponieważ witryna bez treści AI nie ma nic do oznaczenia.
- Licznik przy pozycji menu, widżet w kokpicie i przypomnienie, gdy ostatnie pełne uruchomienie jest starsze niż trzydzieści dni. Przypomnienie można wyłączyć na stałe, dla każdego użytkownika.
Zmieniono
- Raport jest teraz budowany na serwerze. Wcześniej był składany w przeglądarce, co oznaczało, że przegląd nie mógł istnieć, zanim uruchomienie się zakończyło, a ten sam znacznik musiałby być napisany dwukrotnie.
- Pojedyncze ponowne sprawdzenie nigdy nie zapisuje punktu w historii, a strona jasno mówi, że ocena opiera się częściowo na starszych pomiarach. Częściowe zaliczenie nie jest uruchomieniem.
- Uruchomienie przechowuje to, co zgłosiło każde sprawdzenie, więc raport można odbudować bez ponownego uruchamiania wszystkiego.
Naprawiono
Każda kontrola została przeczytana w odniesieniu do źródeł, które cytuje: php.net, podręcznik WordPressa, kod samego WordPressa, MDN oraz pakiety wtyczek, które rozpoznaje. To ujawniło stwierdzenia, które uruchamiają się przy prawidłowych konfiguracjach, jedno, które w ogóle nie można było uruchomić, i twierdzenia, które przestały być prawdziwe lata temu.
- Witryny z ochroną dwuskładnikową zostały zgłoszone jako nieposiadające żadnej. Klucz meta użytkownika przechowywany dla iThemes, Solid i Kadence Security nie jest tym, który zapisują te wtyczki, a ten dla Defendera w ogóle w nim nie istnieje. Google Authenticator przechowuje ciąg „disabled”, który był liczony jako drugi czynnik, ponieważ nie jest pusty, więc jedyny przypadek, dla którego istnieje sprawdzenie, pozostał niezauważony.
- Sprawdzenie wtyczek usuniętych z katalogu nie można było uruchomić. API odpowiada 404 dla zamkniętej listy, a funkcja WordPressa zamienia to w błąd, zanim flaga „zamknięte” zostanie kiedykolwiek odczytana, więc sprawdzenie zgłosiło pełne bezpieczeństwo dokładnie w przypadku, dla którego zostało napisane. Teraz pyta sam punkt końcowy i rozróżnia zamkniętą listę, wtyczkę, która nigdy nie była listowana, i niedostępną.
- WordPress zainstalowany we własnym katalogu został zgłoszony jako wstrzyknięta wartość opcji, o krytycznym poziomie ważności. Porównanie adresów witryny i strony głównej nie pozwala odróżnić tego od przejęcia, a w prawdziwym przejęciu oba są zmieniane razem, więc porównanie zostało usunięte.
- Witryna za Cloudflare została zgłoszona jako posiadająca adres klienta podatny na spoofing. Sprawdzenie szuka teraz proxy, które się identyfikuje i mówi, że wynik jest nieokreślony, gdy nie może tego stwierdzić, zamiast ostrzegać.
- API sklepu WooCommerce zostało zgłoszone jako trasa zapisu pozostawiona bez ochrony. Rejestrowanie trasy jako publicznej to pisownia, którą przewodnik zaleca, więc trasa bez żadnego wywołania zwrotnego uprawnień i trasa celowo publiczna są teraz rozróżniane.
- Ścisła polityka bezpieczeństwa treści (Content Security Policy) z opublikowanych wytycznych została zgłoszona jako pozostawiająca dziurę, którą zamyka. Przeglądarki, które rozumieją 'strict-dynamic’, ignorują rezerwowy 'unsafe-inline’ obok niego, a sprawdzenie robi teraz to samo. Symbol wieloznaczny hosta nie jest już mylony z zezwalaniem na skrypty z dowolnego miejsca.
- DISALLOW_FILE_MODS zamyka edytor plików i zatrzymuje aktualizacje w tle. Żadne sprawdzenie tego nie wiedziało, więc zastosowanie się do własnej porady tej wtyczki pozostawiło jedno odkrycie w mocy, a inne zamieniło w fałszywe potwierdzenie bezpieczeństwa.
- system.multicall nie wzmacnia odgadywania haseł od WordPressa 4.4, a sprawdzenie XML-RPC rozpoznaje teraz filtr, którego większość wtyczek zabezpieczeń używa do wyłączenia interfejsu.
- Porada, aby wybrać nazwę wyświetlaną inną niż nazwa logowania, nic nie daje, ponieważ uproszczona nazwa autora zachowuje nazwę logowania, z której została wygenerowana.
- Hasła aplikacji zostały zgłoszone jako wyłączone na każdej witrynie bez HTTPS, czyli tam, gdzie WordPress odmawia ich w pierwszej kolejności.
- Serwer, który udostępnia źródło pliku PHP, został zgłoszony jako uruchamiający go. Są to różne problemy z różnymi rozwiązaniami.
- .user.ini i .htpasswd zostały wymienione wśród plików do usunięcia. Są to aktywne konfiguracje, a usunięcie drugiego blokuje dostęp użytkownikom.
- Na IIS sprawdzenie .htaccess zalecało zapisanie ustawień bezpośrednich odnośników, co zapisuje tam web.config, a nigdy .htaccess.
- Rola, która pojawiła się dopiero po pierwszym uruchomieniu, jak to ma miejsce w przypadku wtyczki sklepu lub członkostwa, została zgłoszona jako rola posiadająca uprawnienia administratora.
- Instalatory i skrypty powłoki wśród przesłanych plików nie są już traktowane jako kod wykonywany przez serwer.
- Uruchomienie zapisane przez 2.3.2 mogło wywołać ostrzeżenie PHP przy pierwszym wyświetleniu strony po aktualizacji, a stan wyciszenia, z którym zostało zapisane, jest teraz zachowywany, dopóki uruchomienie tej wersji go nie zastąpi.
- Skanowania i wyszukiwania, które nie mogą się zakończyć, teraz informują o tym, zamiast zgłaszać, że wszystko jest w porządku: skanowanie plików kodu samego WordPressa, które osiągnęło swój limit, lista wtyczek, której nie można było pobrać, zrzut bazy danych, którego adres URL nie odpowiedział.
Wyjaśnienia
- Każdy z sześćdziesięciu jeden wpisów został przeczytany w odniesieniu do metody, którą dokumentuje. Czternaście opisywało wyniki, których kontrola nie ma, lub milczało na temat tych, które ma.
- Wpis dotyczący nagłówków zabezpieczeń teraz wymienia wartości do wprowadzenia, co było jedyną rzeczą, której brakowało. Wpisy dotyczące uprawnień mówią, gdzie zmienić uprawnienia plików bez dostępu do powłoki. Około tuzina terminów jest wyjaśnianych tam, gdzie pojawiają się po raz pierwszy, zamiast być zakładanymi.
- Ostrzeżenie dotyczące prefiksu tabeli wskazywało na niewłaściwy mechanizm, a uzasadnienie dla 640 zamiast 440 w wp-config.php było odwrócone. Pliki w katalogu głównym witryny były nazywane nieszkodliwymi jako grupa, chociaż phpinfo.php wyświetla całe środowisko PHP.
2.3.2
Naprawiono
- Sprawdzenie plików wykonywalnych w katalogu uploads zgłosiło pusty plik index.php, który WordPress i większość wtyczek umieszcza w każdym katalogu upload, aby zatrzymać listowanie katalogów. Te pliki są przeciwieństwem znaleziska, a ponieważ sprawdzenie jest krytyczne, pojedynczy z nich obniżył ocenę zdrowej witryny do D. Na dwudziestu witrynach ocena była identyczna z tego samego powodu. Sprawdzenie teraz odczytuje taki plik zamiast oceniać go po nazwie: index.php przechodzi tylko wtedy, gdy pozostaje mały i nie odczytuje danych żądania, nie zawiera żadnego innego pliku, nie wywołuje żadnej z funkcji, których potrzebuje upuszczona powłoka, i niczego nie drukuje. Wszystko inne jest nadal zgłaszane, w tym index.php.
- Każdy zgłoszony plik zawiera teraz swój rozmiar, a tam, gdzie index.php nie przeszedł, powód, dla którego został zgłoszony. Plik strażnika ma kilkaset bajtów, więc sama liczba zazwyczaj rozstrzyga, czym jest plik.
- Pokrycie uwierzytelniania dwuskładnikowego nie mogło odróżnić konta, które nigdy nie zakończyło konfiguracji, od konta, którego po prostu nie można było odczytać, i uznało oba za nierozstrzygające. Każda obsługiwana wtyczka jest teraz wymieniona wraz z metadanymi użytkownika, które zapisuje, więc zainstalowana wtyczka, której nikt nie używa, jest zgłaszana jako zagrożenie, którym jest, wymieniając konta bez drugiego czynnika.
- Wykrywanie uwierzytelniania dwuskładnikowego obejmuje teraz ReportedIP Hive, Solid Security, Kadence Security, WP Defender i Google Authenticator. iThemes Security zostało dwukrotnie zmienione i jest dostarczane pod trzema nazwami katalogów, z których wszystkie są rozpoznawane.
2.3.1
- Ekran jest teraz ułożony w trzech krokach: rozpocznij sprawdzenie, przeczytaj wynik, przejdź przez wszystko inne. Kroki drugi i trzeci mówią, co będą zawierać przed pierwszym uruchomieniem, więc strona wyjaśnia się sama.
- Przycisk start mówi, co robi i ile czasu to zajmuje, a notatka o pliku tymczasowym znajduje się bezpośrednio nad nim.
- Wynik otwiera się prostym zdaniem, a nie tylko literą: ile znalezisk wymaga teraz uwagi, ile warto poprawić i ile sprawdzeń nie można było ukończyć.
- Strona przewija się do wyniku, gdy uruchomienie się zakończy, zamiast pozostawiać go poniżej linii zgięcia.
- Lista priorytetów jest teraz nazywana tym, czym jest, listą zadań, i mówi, aby przechodzić przez nią po kolei.
- Znalezisko może zawierać odnośnik do dalszej pomocy. Znalezisko dotyczące uwierzytelniania dwuskładnikowego używa go do wskazania wtyczki Two Factor z zespołu [kodu samego WordPressa] oraz na ReportedIP Hive, które sami budujemy i nazywamy naszym.
- Usunięto trzy ciągi interfejsu i dwie reguły arkusza stylów pozostawione po przebudowie.
2.3.0
Przebudowano
- Jeden rejestr jest teraz jedynym źródłem prawdy dla sprawdzenia: identyfikator, etykieta, grupowanie, pilność, waga, wywołanie zwrotne i dokumentacja znajdowały się wcześniej w czterech oddzielnych miejscach, których nic nie utrzymywało w synchronizacji. Test teraz wymusza ich zgodność.
- Ocenianie przeniesiono z przeglądarki do PHP, co sprawia, że wynik jest odtwarzalny, testowalny i dostępny poza kokpitem.
- Punkt końcowy admin-ajax został zastąpiony trasami REST pod
cascr/v1, uruchamiając trzy sprawdzenia jednocześnie, zamiast ściśle jedno po drugim. - Wyniki są przechowywane, więc raport może porównać jedno uruchomienie z poprzednim.
Dodano
- Dwadzieścia pięć sprawdzeń, w tym publicznie czytelne pliki konfiguracyjne i foldery repozytoriów, zrzuty bazy danych w katalogu głównym witryny, wtyczki must-use i drop-ins, zmiany ról i uprawnień, spis haseł aplikacji z ostatnim użyciem, zasięg uwierzytelniania dwuskładnikowego na administratora, nieautoryzowane trasy zapisu REST, wygaśnięcie certyfikatu TLS, jakość HSTS i CSP, atrybuty plików cookie, fałszowanie adresu klienta i zmiany własności wtyczek.
wp security-check runjako polecenie WP-CLI.- Lista priorytetów pięciu rzeczy, które warto zrobić najpierw, na górze raportu.
- Porównanie z poprzednim uruchomieniem: nowo nieudane, rozwiązane, zmienione.
- Wyciszanie za pomocą odcisku palca treści, więc zaakceptowany wynik pojawia się ponownie, gdy tylko faktycznie się zmieni.
- „Nieokreślony” jako własny wynik, więc zablokowane żądanie nie jest już wynikiem i nie wpływa już na ocenę.
- Eksportuje jako zwykły tekst, JSON i CSV.
- Filtry
cascr_registryicascr_test_result.
Naprawiono
- Multisite zgłaszało „rejestracja jest zamknięta” w sieci, która pozwalała każdemu się zarejestrować, ponieważ sprawdzenie odczytywało opcję dla każdej witryny, którą multisite ignoruje. Teraz odczytuje ustawienia sieci.
- Administratorzy sieci byli pomijani w sprawdzeniach haseł, administratorów, uwierzytelniania dwuskładnikowego i haseł aplikacji. Posiadają wszystkie uprawnienia niezależnie od ich roli w witrynie, więc samo zapytanie o rolę ich nie znajdowało.
- Sprawdzenie prefiksu tabeli porównywało prefiks dla każdej witryny w multisite, więc każda podwitryna wyglądała, jakby miała własny.
- Zapisana ścieżka skryptowania międzywitrynowego: wyniki zawierające dane witryny, takie jak nazwy wtyczek lub nazwy użytkowników, zostały zapisane w podsumowaniu za pomocą innerHTML.
- Sprawdzenia uprawnień porównywano dokładnie z 0755 i dlatego zgłaszano 0750 oraz powszechne setgid 2755 jako niebezpieczne.
WP_AUTO_UPDATE_COREustawione na true było zgłaszane jako ryzyko, chociaż umożliwia więcej aktualizacji niż zalecane ustawienie.- „Niemodyfikowane od sześciu miesięcy” było traktowane jako „nieaktualne”, co oznaczało dobrze utrzymywane wtyczki. Zastąpiono datą wydania, wersją „testowane do” i statusem katalogu.
- Skanowanie sygnatur złośliwego oprogramowania przeszukiwało wp-admin i wp-includes w poszukiwaniu ciągów takich jak
eval(i$_GET[i wymagało ręcznie utrzymywanej listy 180 plików kodu samego WordPressa, aby pozostać cichym. Zastąpiono porównaniem z oficjalną listą plików WordPressa. - Nagłówki zabezpieczeń były zasadą wszystko albo nic. Teraz są punktowane na nagłówek, a nagłówki izolacji cross-origin są traktowane jako opcjonalne.
- Interfejs podążał za schematem kolorów systemu operacyjnego i malował ciemne karty na jasnym kokpicie. Teraz podąża za panelem administracyjnym WordPressa.
Zmieniono
- Jedno żądanie do strony głównej na uruchomienie zamiast czterech i jedno wyszukiwanie aktualizacji zamiast jednego żądania na zainstalowaną wtyczkę.
- Połączono zduplikowane sprawdzenia (obsługa wersji PHP, metody XML-RPC, ograniczanie prób logowania) i usunięto dwa, które nigdy nie mogły zawieść (wersja jQuery, silnik przechowywania tabel).
- Każdy ciąg znaków w interfejsie jest możliwy do przetłumaczenia. Raport był wcześniej zakodowany na stałe w języku angielskim z niemieckim formatem daty.
- Liczby w raporcie używają prawidłowych form liczby mnogiej zamiast zakładać liczbę mnogą.
- Alert JavaScript został zastąpiony przez powiadomienie administratora i ogłoszenie dla czytnika ekranu.
- Pakiet testów działa teraz również w środowisku multisite, jako krok blokujący przed każdym wydaniem.
2.2.2
- Rozszerzona kompatybilność z PHP: wtyczka działa na PHP od 7.4 do 8.5.
- Wymaga WordPress 7.0 lub nowszego.
- Dodano zautomatyzowany pakiet testów obejmujący każde sprawdzenie oraz bramki uprawnień i kodów jednorazowych
- Ciągła integracja sprawdza kod w siedmiu wersjach PHP i uruchamia testy dla WordPress 7.0 oraz obecnego wydania.
- Naprawiono ostrzeżenie PHP w sprawdzeniach aktualizacji motywów i wtyczek, gdy ścieżka już nie istnieje
- Usunięto nieużywane ścieżki starego kodu i osiągnięto pełną zgodność ze standardami kodowania WordPress.
2.2.1
- Pierwsze wydanie w katalogu wtyczek WordPress.org
- Zmieniono nazwę katalogu wtyczki, głównego pliku i domeny tekstowej na security-check-report
- Usunięto test czarnej listy IP Spamhaus, który wysyłał adres serwera do strony trzeciej bez pytania
- Usunięto nieużywany, przestarzały kod i pliki
- Naprawiono ładowanie tłumaczeń w WordPress 6.7 i nowszych
- Włączono weryfikację certyfikatu dla żądania testu wykonania PHP
2.2.0
- Przeprojektowano interfejs z natywnym akordeonem szczegółów i podsumowania
- Dodano wyszukiwanie na żywo w dokumentacji sprawdzeń
- Przepisano każdy opis sprawdzenia na spójny format: co sprawdza, dlaczego jest to ważne, co należy zrobić
- Ujednolicono schemat kolorów i naprawiono kilka problemów z układem.
