Cztery zestawy testów i wszystko, co każdy test sprawdza.
Badanie jednej strony nie musi odpalać wszystkiego naraz. Zestaw układa testy w tury: najpierw cztery pytania „czy strona w ogóle żyje”, potem — tylko jeśli żyje — kolejne warstwy, od najtańszych do najdroższych. Tu są cztery gotowe zestawy, reguły, według których działają, i pełny katalog 24 testów.
Karta techniczna — podaje nazwy plików i testów. Jeden skan od zlecenia do subtaska opisuje Skan krok po kroku, architekturę — Skaner, znaczenie pomiarów — karty parametrów. Stan odczytany z kodu 22.09.2026.
- Zestawów
- 42 tanie · 2 premium
- Testów w katalogu
- 24z kartą 10 · bez karty 14
- Tur najwięcej
- 7premium pełny
- Termin strony
- 60 stesty bezpieczeństwa
Schemat pełnego zestawu. Tani lekki kończy się na trzeciej turze, premium czujka ma własne tury (infekcja + reputacja). Kolejność nie jest ozdobą: dwa najdroższe testy stoją późno, bo zbyt wiele żądań pod rząd sprawia, że zapora strony klienta blokuje skaner.
| Nr | Krok | Plik | Co się dzieje |
|---|---|---|---|
| 01 | Wybór zestawu | skaner/scenariusze/<nazwa>.toml · skaner/zestawy.py | Zestaw to plik z listą tur. Przed startem przechodzi walidację: nagłówek rodzaj = "badanie", każdy test z katalogu, żaden test dwa razy, warunek tury pyta wyłącznie o test z wcześniejszej tury. Zły zestaw = odmowa zlecenia z listą błędów, nie częściowe badanie. |
| 02 | Sufit zasobów | skaner/strona.py::przygotuj_przebieg | Zestaw ma zasoby = darmowe albo zewnetrzne. Przełącznik --zewnetrzne podnosi sufit każdego zestawu. Zestaw, tury i sufit zapisują się przy przebiegu — później widać, czym go zbadano. |
| 03 | Tury po kolei | skaner/strona.py::wykonaj_przebieg | Tura rusza, gdy spełnia warunek gdy i mieści się w suficie. Inaczej jest pomijana z powodem: każdy jej test dostaje wynik „pominięty” z opisem, np. http = fail (warunek: ok|ok_po_ponowieniu). Nigdy po cichu. |
| 04 | Testy z kartą | skaner/adapter.py::wykonaj_karte · skaner/proby.toml | Dziesięć testów dostępności. Każdy po kolei: próba bazowa, a gdy nie daje ok — warianty ponowień z katalogu (powtórka, druga forma adresu, port 80, bez TLS). Pierwszy wariant z ok kończy ponawianie; test bez ok w próbie bazowej zakłada przypadek do weryfikacji. |
| 05 | Testy bezpieczeństwa | skaner/strona.py::uruchom_parasol · helpers/security_testy.py | Czternaście testów bez karty. Wszystkie testy tury idą jednym procesem, każdy zostawia własny odczyt. Wspólny termin 60 s na stronę: test, który nie zdążył, dostaje wynik „nie da się sprawdzić” zamiast wieszać badanie. Fingerprint z wcześniejszej tury przechodzi do testów od niego zależnych — nikt nie zgaduje wersji drugi raz. |
| 06 | Ocena po turze | skaner/strona.py::usterki_przebiegu | Po każdej turze z testami bezpieczeństwa liczy się ocena: odczyt → werdykt (trzy warstwy reguł) → usterka. Test bezpieczeństwa, który dał usterkę, ma wynik „niezaliczony” — i o ten wynik może już pytać warunek następnej tury. |
| 07 | Wynik: usterki i wskaźnik | skaner/ocena.py · skaner/usterki.toml | Lista atomowych usterek z wagą 1–5, wskaźnik 1–10 (10 = najgorzej) oraz sekcja stłumione: co reguły odrzuciły i na podstawie której. Podsumowanie wersji rozkłada się na usterki tak samo jak w torze grupowym — ten sam wskaźnik w badaniu i w panelu. |
Zestaw jest badaniem, nie rytmem monitoringu. Monitoring z harmonogramu mierzy za każdym razem to samo, bo inaczej szereg czasowy przestałby znaczyć to samo z dnia na dzień. Badanie odwrotnie — rozgałęzienie po wynikach jest jego sensem.
| Zestaw | Dla kogo, kiedy | Zasoby | Tury | Testy | Koszt | Czas | Czego nie sprawdza |
|---|---|---|---|---|---|---|---|
| Tani lekkitani_lekki | Pierwsze spojrzenie, strona bez abonamentu, przejście całego portfolio. | darmowe | 3 | 14 | ~15–20 żądań HTTP | 25 s | wersje WordPressa i wtyczek, podatności, wystawione pliki, sitemap, dryf DNS, reputację Google |
| Tani ciężkitani_ciezki | Pełna diagnoza z zewnątrz bez płatnych usług: przed ofertą, po incydencie, strona bez abonamentu. | darmowe | 5 | 22 | ~100 żądań HTTP | 94 s | reputację Google (Web Risk) i eskalację podatności w WPScan |
| Premium czujkapremium_czujka | Szybkie „czy wszystko w porządku” dla strony z abonamentem; po zgłoszeniu klienta; co 1–2 h. | zewnętrzne | 4 | 9 | ~12 żądań HTTP + 1 zapytanie Web Risk | 19 s | konfigurację, SEO, wersje i podatności — to jest przegląd stanu, nie audyt |
| Premium pełnypremium_pelny | Pełna diagnoza strony z abonamentem, przegląd okresowy, sprawdzenie po naprawie. | zewnętrzne | 7 | 24 | ~100 żądań HTTP + Web Risk + WPScan (0–kilka) | 65 s | nic z katalogu — wszystkie 24 testy |
- Tani
- Tylko zasoby darmowe: żądania do strony, DNS i lokalny indeks podatności. Żadna usługa z limitem dobowym.
- Premium
- Sufit „zewnętrzne”: dochodzi reputacja Google (Web Risk), a w pełnym także eskalacja podatności w WPScan.
- Lekki i czujka
- Bez dwóch najdroższych testów (fingerprint ~60 żądań, exposure 25) — szybkie i bezpieczne dla WAF-ów klientów.
Czasy zmierzone na tej samej stronie jeden po drugim, bez kluczy usług zewnętrznych — z kluczami premium dochodzi po jednym zapytaniu na usługę. Czas zależy od strony bardziej niż od zestawu: na tej samej stronie fingerprint trwał raz 18 s, raz ponad 36 s, dlatego zestaw ciężki wypadł tu wolniej niż pełny. Zestawy ciężkie zjadają czas w fingerprincie i exposure.
| Nr | Tura | Rusza, gdy | Testy | Po co |
|---|---|---|---|---|
| 1 | rozpoznanie | zawsze | dns · tcp · ssl · http | cztery testy krytyczne — każdy zamyka gałąź badania |
| 2 | strona | http = ok albo ok po ponowieniu | redirect · www_redirect · content · ttfb | czy strona jest poprawnie podana |
| 3 | co_to_za_strona | http = ok albo ok po ponowieniu | infection_check · security_headers · mixed_content · robots_check · indexability_check · seo_check | sześć odpowiedzi z jednego pobrania HTML (+ robots.txt) |
| Nr | Tura | Rusza, gdy | Testy | Po co |
|---|---|---|---|---|
| 1 | rozpoznanie | zawsze | dns · tcp · ssl · http · ip_change · dns_integrity_check | testy krytyczne + porównanie DNS z linią bazową |
| 2 | strona | http = ok albo ok po ponowieniu | redirect · www_redirect · partial_availability · content · ttfb | poprawność podania strony |
| 3 | co_to_za_strona | http = ok albo ok po ponowieniu | infection_check · security_headers · mixed_content · robots_check · indexability_check · sitemap_check · seo_check | infekcja, nagłówki, widoczność dla Google |
| 4 | glebiej | http = ok albo ok po ponowieniu | wp_fingerprint · exposure | dwa najdroższe testy (~85 żądań) — dopiero gdy strona odpowiada |
| 5 | podatnosci | wp_fingerprint = ok | vuln_match · version_summary | CVE z lokalnego indeksu Wordfence — tylko z wiarygodnym fingerprintem |
| Nr | Tura | Rusza, gdy | Testy | Po co |
|---|---|---|---|---|
| 1 | rozpoznanie | zawsze | dns · tcp · ssl · http | czy strona żyje |
| 2 | strona | http = ok albo ok po ponowieniu | content · ttfb · partial_availability | czy to NASZA strona i czy działa w obu formach adresu |
| 3 | infekcja | http = ok albo ok po ponowieniu | infection_check | HTML dla przeglądarki i dla Googlebota — defacement, wstrzyknięcia, cloaking |
| 4 | reputacjazewnętrzne | zawsze | safebrowsing | opinia Google — nie wymaga działającej strony |
| Nr | Tura | Rusza, gdy | Testy | Po co |
|---|---|---|---|---|
| 1 | rozpoznanie | zawsze | dns · tcp · ssl · http · ip_change · dns_integrity_check | testy krytyczne + dryf DNS |
| 2 | strona | http = ok albo ok po ponowieniu | redirect · www_redirect · partial_availability · content · ttfb | poprawność podania strony |
| 3 | co_to_za_strona | http = ok albo ok po ponowieniu | infection_check · security_headers · mixed_content · robots_check · indexability_check · sitemap_check · seo_check | infekcja, nagłówki, widoczność dla Google |
| 4 | glebiej | http = ok albo ok po ponowieniu | wp_fingerprint · exposure | wersje i wystawione pliki |
| 5 | podatnosci | wp_fingerprint = ok | vuln_match · version_summary | CVE z indeksu Wordfence |
| 6 | reputacjazewnętrzne | zawsze | safebrowsing | czarna lista Google |
| 7 | eskalacja_cvezewnętrzne | wp_fingerprint = ok | wpscan | WPScan tylko dla wtyczek z wersją, których Wordfence nie zna |
| Test | Grupa | Tani lekki | Tani ciężki | Premium czujka | Premium pełny |
|---|---|---|---|---|---|
| dns | dostępność | ● | ● | ● | ● |
| tcp | dostępność | ● | ● | ● | ● |
| ssl | dostępność | ● | ● | ● | ● |
| http | dostępność | ● | ● | ● | ● |
| redirect | dostępność | ● | ● | — | ● |
| www_redirect | dostępność | ● | ● | — | ● |
| partial_availability | dostępność | — | ● | ● | ● |
| content | dostępność | ● | ● | ● | ● |
| ttfb | dostępność | ● | ● | ● | ● |
| exposure | bezpieczeństwo | — | ● | — | ● |
| wp_fingerprint | podatności | — | ● | — | ● |
| vuln_match | podatności | — | ● | — | ● |
| version_summary | podatności | — | ● | — | ● |
| wpscan | podatności | — | — | — | ● |
| infection_check | bezpieczeństwo | ● | ● | ● | ● |
| safebrowsing | bezpieczeństwo | — | — | ● | ● |
| security_headers | bezpieczeństwo | ● | ● | — | ● |
| mixed_content | bezpieczeństwo | ● | ● | — | ● |
| robots_check | SEO | ● | ● | — | ● |
| indexability_check | SEO | ● | ● | — | ● |
| sitemap_check | SEO | — | ● | — | ● |
| seo_check | SEO | ● | ● | — | ● |
| ip_change | domena | — | ● | — | ● |
| dns_integrity_check | domena | — | ● | — | ● |
| Razem | 14 | 22 | 9 | 24 |
| Test | Co mierzy · koszt | Zaliczony, gdy · niezaliczony, gdy · ponowienia | Usterki, jakie daje |
|---|---|---|---|
| dnsdostępność | Czy domena rozwiązuje się na rekord A i — gdy znamy oczekiwany adres — czy ten adres jest wśród odpowiedzi.koszt: 1 zapytanie DNS · 2 s | zaliczony resolver zwraca rekordy A, a oczekiwany adres jest wśród nich (bez oczekiwanego wystarczy udane zapytanie)niezaliczony oczekiwanego adresu nie ma (porwanie DNS albo migracja hostingu); domena nie istnieje, brak odpowiedziponowienia: powtórka po 3 s · druga forma adresu (www ↔ bez www) | waga 5 dns |
| tcpdostępność | Czy serwer przyjmuje połączenie TCP na porcie 443.koszt: 1 gniazdo · 2 s | zaliczony połączenie zestawione przed upływem limitu; gniazdo od razu zamykaneniezaliczony odmowa, brak trasy, błąd DNS, przekroczony czasponowienia: powtórka · druga forma · port 80 (diagnoza: serwer żyje, nie działa HTTPS) | waga 5 tcp |
| ssldostępność | Certyfikat TLS na porcie 443: data wygaśnięcia i zgodność nazwy domeny z certyfikatem.koszt: 1 handshake TLS · 4 sNie cache’ujemy go: łapie rzeczy bez terminu — cudzy certyfikat po migracji, nieudane odnowienie. | zaliczony certyfikat ważny dłużej niż 3 dni i nazwa domeny pasuje (wildcard tylko na jedną etykietę)niezaliczony wygasa za 0–3 dni; handshake się nie udał; certyfikatu nie da się odczytaćponowienia: powtórka · druga forma | waga 4 sslwaga 2 ssl_expiry |
| httpdostępność | Kod odpowiedzi strony głównej po przekierowaniach (najwyżej 5).koszt: 1 GET (+1 przy blokadzie monitora) · 5 sOd jego wyniku zależą wszystkie tury poza rozpoznaniem i reputacją. | zaliczony kod 200–399; albo blokada monitora (403/406/415/429/451), a ponowienie jako przeglądarka daje 200–399niezaliczony kod 400–599; odmowa, błąd TLS, pętla przekierowań, przekroczony czasponowienia: powtórka · druga forma · bez TLS (http://) | waga 5 http |
| redirectdostępność | Czy http:// przekierowuje na https:// i ile przeskoków ma łańcuch.koszt: 1–2 GET · 7 s | zaliczony adres końcowy na https:// (za długi łańcuch to ostrzeżenie, nie porażka)niezaliczony zostaje na http://; pętla przekierowań; błąd sieciponowienia: powtórka | waga 2 redirect |
| www_redirectdostępność | Czy www i bez www kończą na jednym hoście (kanoniczność), a nie są dwiema osobnymi wersjami strony.koszt: 2 GET · 7 s | zaliczony obie formy kończą na tym samym hoście; albo www nie ma w DNS; albo domena jest subdomenąniezaliczony obie formy dają 200 na różnych hostach; jedna forma ląduje na obcej domenieponowienia: powtórka | waga 2 www_redirect |
| partial_availabilitydostępność | Czy działa tylko jedna z form adresu (https://domena, https://www.domena).koszt: 2–4 GET · 15 s | zaliczony UWAGA — odwrotnie niż intuicja: ok = brak częściowej dostępności (obie działają albo obie leżą)niezaliczony dokładnie jedna forma daje 200, druga nie (błąd certyfikatu, inny kod, błąd sieci)ponowienia: powtórka | waga 3 partial_availability |
| contentdostępność | Czy strona zawiera umówiony fragment tekstu (dokładny podciąg).koszt: 1 GET · 5 sWymaga parametru strony z oczekiwanym tekstem — bez niego test jest pomijany, nie niezaliczony. | zaliczony kod poniżej 400 i fragment jest w treściniezaliczony fragmentu nie ma (podmieniona strona, zaślepka hostingu, parking); kod 400+ponowienia: powtórka · druga forma | waga 3 content |
| ttfbdostępność | Czas do odpowiedzi strony głównej, z histerezą.koszt: 1 GET · 10 s | zaliczony odpowiedź przyszła; czas ponad próg (3000 ms) podbija serię, ale do 3 wolnych z rzędu wynik zostaje okniezaliczony czas ponad próg przez 3 kolejne pomiaryponowienia: powtórka po 5 s · druga forma | waga 2 ttfb |
| exposurebezpieczeństwo | Czy strona wydaje publicznie pliki i endpointy ułatwiające atak — 25 sond ścieżek.koszt: 25 żądań · 15 s na sondęDrugi najdroższy test. Za dużo żądań pod rząd = WAF klienta blokuje IP skanera — dlatego stoi w późnej turze. | zaliczony strażnik „soft-200” nie zgłasza fałszywych 200 i żadna z 25 sond nie spełnia warunkuniezaliczony .env, .git, kopie wp-config, debug.log, phpinfo, adminer, listing katalogu, archiwa i zrzuty SQL, xmlrpc, wyliczanie użytkowników, otwarta rejestracjaponowienia: powtórka (zmiana wejścia znaleziska nie „naprawi”) | waga 4 exposure_envwaga 4 exposure_gitwaga 4 exposure_wpconfig_bakwaga 4 exposure_sql_dumpwaga 4 exposure_backup_archivewaga 4 exposure_phpinfowaga 4 exposure_db_consolewaga 3 exposure_debug_logwaga 3 exposure_directory_listingwaga 3 exposure_htaccess_bakwaga 2 exposure_xmlrpcwaga 2 exposure_users_enumwaga 2 exposure_author_enumwaga 2 open_registrationstłumione exposure_readmestłumione exposure_wpcronstłumione exposure_dev_manifeststłumione exposure_ds_store |
Test z kartą ma warianty ponowień z skaner/proby.toml. Wariant nie zmienia werdyktu o stronie — „ok po ponowieniu” mówi, co zadziałało (druga forma adresu, port 80, http://), i jest materiałem dla weryfikacji, nie zaliczeniem.
| Test | Co mierzy · koszt | Zaliczony, gdy · niezaliczony, gdy | Usterki, jakie daje |
|---|---|---|---|
| wp_fingerprintpodatności | Z zewnątrz: wersja WordPressa, wtyczki, motyw i PHP — z meta generatora, readme.txt popularnych wtyczek, namespace’ów REST.koszt: ~60 żądań · najwyżej 60% terminu stronyNajdroższy test w systemie. Sam nie daje usterek — karmi podatności. Lista wtyczek jest z natury niepełna. | zaliczony pomiar wiarygodny (strona nie ukrywa się za WAF-em ani nie zwraca błędu)niezaliczony „nie da się sprawdzić”, gdy wynik jest niewiarygodny (WAF, błąd certyfikatu) albo minął termin | — (karmi inne testy) |
| vuln_matchpodatności | Wykryte wersje rdzenia, wtyczek i motywów porównane z lokalnym indeksem Wordfence.koszt: 0 żądań · indeks 11 MB wczytany raz na badaniePojedyncze CVE są stłumione bramką — usterki z podatności niesie podsumowanie wersji. | zaliczony porównanie wykonane (znalezione CVE idą do podsumowania wersji)niezaliczony „nie da się sprawdzić” bez wiarygodnego fingerprintu albo bez indeksu | stłumione vuln_cvestłumione vuln_wp_corestłumione outdated_pluginstłumione outdated_theme |
| version_summarypodatności | Podsumowanie wersji: rdzeń, wtyczki do aktualizacji, krytyczne CVE, motyw — plus „nieaktualne” według wordpress.org.koszt: 1 zapytanie wordpress.org (cache tygodniowy)Ta sama droga co w torze grupowym: rozkład nazwy podsumowania na atomy. Dzięki temu wskaźnik zgadza się z panelem. | zaliczony brak krytycznych CVE (podsumowanie bez krytycznych jest informacyjne)niezaliczony niezaliczony, gdy są krytyczne CVE — rozkłada się na usterki | waga 4 vuln_cve_krytycznawaga 4 vuln_wp_core_krytycznawaga 2 outdated_pluginwaga 2 wersja_nieznana |
| wpscanpodatności | Eskalacja: WPScan dla wtyczek z konkretną wersją, których Wordfence nie zna.koszt: 0–kilka zapytań · 25 na dobę na CAŁĄ produkcjęUsługa zewnętrzna — tylko w zestawach z sufitem „zewnętrzne”. | zaliczony sprawdzone (nic nieznanego albo brak nowych luk)niezaliczony „nie da się sprawdzić” bez klucza albo po limicie; znalezione luki jako vuln_cve | stłumione vuln_cve |
| infection_checkbezpieczeństwo | Oznaki aktywnej infekcji w HTML strony głównej: obce skrypty, eval(atob), ukryte ramki, spam SEO, sygnatury kampanii 2025–26, cloaking (inna treść dla Googlebota).koszt: 2 pobrania (przeglądarka + Googlebot)Pusta odpowiedź dla Googlebota to zwykle blokada botów, nie cloaking. Bez usługi zewnętrznej leci bez reputacji Google. | zaliczony strona pobrana i żadna heurystyka nie trafiłaniezaliczony znaleziony wskaźnik infekcji; albo strona niedostępna dla sondy (skan infekcji niewykonany) | waga 5 infection_base64_evalwaga 5 infection_cloakingwaga 5 infection_same_origin_loaderwaga 5 infection_socgholish_gatewaywaga 5 infection_etherhidingwaga 5 infection_safe_browsingwaga 3 infection_seo_spamwaga 3 infection_foreign_scriptwaga 3 infection_hidden_iframestłumione infection_scan_unknown |
| safebrowsingbezpieczeństwo | Czy Google oznaczył domenę jako malware albo phishing (Web Risk).koszt: 1 zapytanie Web Risk · budżet ~3300 na dobęUsługa zewnętrzna. Brak klucza = „nie da się sprawdzić”, nigdy „czysto”. | zaliczony domena nie jest na liścieniezaliczony domena na czarnej liście Google | waga 5 safebrowsing_flagged |
| security_headersbezpieczeństwo | Obecność 6 nagłówków ochronnych: HSTS, X-Frame-Options, X-Content-Type-Options, CSP, Referrer-Policy, Permissions-Policy.koszt: 1 HEAD (GET przy 405)Higiena, nie awaria — wszystkie braki są stłumione bramką i widoczne w sekcji „stłumione”. | zaliczony nagłówek odczytany (braki są ustaleniami, nie awarią)niezaliczony — | stłumione missing_hstsstłumione missing_xframestłumione missing_nosniffstłumione missing_cspstłumione missing_referrer_policystłumione missing_permissions_policy |
| mixed_contentbezpieczeństwo | Zasoby ładowane przez http:// na stronie https:// (pomija mailto, tel, data, komentarze).koszt: 1 GET · osobny limit 10 s | zaliczony brak zasobów po http://niezaliczony co najmniej jeden zasób po http:// | waga 2 mixed_content |
| robots_checkSEO | Czy /robots.txt istnieje i czy nie blokuje wszystkiego (Disallow: / dla * albo Googlebota).koszt: 1 GET | zaliczony plik jest i nie blokuje całej stronyniezaliczony brak pliku; blokada całej strony | waga 2 robots_block_allstłumione robots_missing |
| indexability_checkSEO | Czy strona jest widoczna dla Google: Disallow: / w robots.txt, meta robots noindex, nagłówek X-Robots-Tag.koszt: 0 dodatkowych (wspólne pobranie HTML) | zaliczony żaden z trzech sygnałów noindexniezaliczony noindex — częsty ślad „Proś wyszukiwarki o nieindeksowanie” po migracji | waga 2 noindex |
| sitemap_checkSEO | Mapa strony (wp-sitemap.xml albo sitemap_index.xml): liczba adresów, podział, ostatnia zmiana.koszt: 1–2 GET | zaliczony mapa odczytana, liczba adresów w normieniezaliczony ponad 1000 adresów na zwykłej stronie firmowej — możliwy wstrzyknięty spam | stłumione sitemap_absurd_url_count |
| seo_checkSEO | Link kanoniczny, tytuł strony i zgodność http/https linków wewnętrznych.koszt: 0 dodatkowych (wspólne pobranie HTML) | zaliczony canonical i tytuł są, linki wewnętrzne po httpsniezaliczony brak canonical; brak tytułu; canonical albo linki własne po http:// | stłumione seo_title_missingstłumione seo_canonical_missingstłumione seo_http_https_mismatch |
| ip_changedomena | Czy zbiór adresów IP domeny zmienił się od poprzedniego badania.koszt: 1 zapytanie DNSLinia bazowa badania jest osobna od produkcji — badanie nie rusza stanu monitoringu. | zaliczony adresy bez zmian; pierwsze badanie domeny = zapis linii bazowej, bez ustalenianiezaliczony inny zbiór adresów — przejęcie domeny albo migracja hostingu bez wiedzy agencji | waga 3 ip_changed |
| dns_integrity_checkdomena | Dryf serwerów nazw, poczty (MX) i zabezpieczeń poczty (SPF, DMARC) względem linii bazowej.koszt: 4 zapytania DNS | zaliczony rekordy bez zmian; pierwsze badanie = linia bazowaniezaliczony zmiana NS (przejęcie po wygaśnięciu domeny), zmiana MX, zdjęte SPF/DMARC | waga 3 dns_ns_changedwaga 3 dns_mx_changedwaga 3 dns_mail_auth_removedstłumione dns_spf_missingstłumione dns_dmarc_missing |
- Waga 5–1
- Waga usterki z katalogu usterek atomowych: najcięższa wybiera pasmo wskaźnika (5 → 9–10, 4 → 7–8, 3 → 5–6, 2 → 3–4, 1 → 2).
- stłumione
- Bramka polityki zgłoszeń przepuszcza typ tylko do sekcji „stłumione” — widać go z nazwą reguły, ale nie podnosi wskaźnika.
- Bez karty
- Te testy nie mają wariantów ponowień: znalezisko bezpieczeństwa to fakt o stronie, a fałszywe alarmy odsiewają reguły, nie powtórka.
| zaliczony | pomiar wykonany, bez usterki strony |
| ok po ponowieniu | próba bazowa nie przeszła, wariant tak — to diagnoza, nie zaliczenie (zakłada przypadek) |
| niezaliczony | test z kartą: warunek porażki z karty; test bezpieczeństwa: dał usterkę strony w ocenie |
| nie da się sprawdzić | pomiaru nie było: minął termin, brak DNS, niewiarygodny fingerprint, brak klucza usługi — z przyczyną |
| błąd sondy | zawiódł test, nie strona: wyjątek, wynik niezgodny z kartą, brak odczytu |
| pominięty | test niemożliwy albo niechciany: tura pominięta, brak parametru strony, usługa zewnętrzna wyłączona |
„Nie da się sprawdzić” nigdy nie udaje „czysto”: test bez pomiaru zostawia odczyt z przyczyną. Przykład — reputacja Google bez klucza usługi daje ten wynik, a nie pustą listę znalezisk.
| Zasób | Budżet | Reguła |
|---|---|---|
| Termin strony | 60 s na testy bezpieczeństwa jednej tury; proces najwyżej 180 s | Test po terminie = „nie da się sprawdzić”. Fingerprint dostaje najwyżej 60% terminu, gdy w turze są inne testy. |
| Żądania do strony klienta | ~100 w zestawach ciężkich (fingerprint ~60, exposure 25) | Nie limit usługi, tylko WAF klienta: zbyt wiele żądań pod rząd blokuje adres skanera. Stąd późne tury. |
| Web Risk (Google) | ~3300 zapytań na dobę; bezpiecznik 3000 | Licznik dobowy wspólny z workerem. Po limicie test jest pominięty z powodem. |
| WPScan | 25 zapytań na dobę na CAŁĄ produkcję | Eskalacja, nigdy rutyna. Budżet liczony w stanie badania, osobno od produkcji. |
| Indeks Wordfence | 11 MB, 0,8 s wczytania | Raz na badanie i tylko w turze, która go potrzebuje. |
| python -m skaner strona zestawy | lista zestawów z turami, testami i warunkami (i walidacja każdego pliku) |
| python -m skaner strona skanuj <domena> --zestaw tani_lekki | badanie jednej strony zestawem |
| python -m skaner strona skanuj <domena> --zestaw tani_ciezki --zewnetrzne | podniesiony sufit: dopuszcza usługi zewnętrzne |
| python -m skaner strona skanuj <domena> --sondy wp_fingerprint,infection_check | pojedyncze testy bez zestawu (jedna tura) |
| POST /przebiegi {domena, zestaw, zewnetrzne} | to samo przez API skanera (panel, agent); odpowiedź 202 i przebieg w tle |
Własny zestaw to nowy plik w skaner/scenariusze/ — nagłówek rodzaj, nazwa równa nazwie pliku, zasoby i lista [[tura]] z polami nazwa, testy, opcjonalnie gdy i zasoby. Polecenie „strona zestawy” sprawdza go przed pierwszym użyciem.
| „fingerprint = ok” ≠ „to jest WordPress” | Warunek tury pyta o wynik testu, nie o etykietę. Strona bez WordPressa z wiarygodnym pomiarem przepuści turę podatności — bez szkody (0 CVE), ale z kosztem. |
| Brak warunku „strona ma wtyczkę” | Strona z wtyczką Creato Ping mogłaby pominąć fingerprint (−60 żądań) — reguła zapisana, jeszcze niewykonywana. |
| Brak warunków na liczbach | „czas odpowiedzi > 2 s → dołóż pomiar” to następny krok. Dziś warunek zna tylko wynik testu. |
| Limit 60 s tylko w badaniu | Skan z harmonogramu (tor grupowy) dalej nie ma terminu na stronę — to osobna zmiana. |
| Zestaw to badanie, nie monitoring | Nagłówek „badanie” pilnuje, żeby nikt nie podpiął drzewka pod harmonogram: szereg czasowy musi mierzyć za każdym razem to samo. |