Wróć do bloga
Case Study

Strażnik Witryn – projekt naszego kursanta

Kod HTTP 200 nie znaczy, że strona działa poprawnie. Strażnik Witryn to automatyzacja w n8n, która pilnuje dostępności, integralności treści (SHA-256), bezpieczeństwa zależności (OSV API) i prób prompt injection – zgłoszona na konkurs StormIT z okazji Dnia Programisty.

6 min czytania
case study, n8n, bezpieczeństwo, OSV API, prompt injection, Healthchecks.io

Kod HTTP 200 mówi tylko, że serwer odpowiedział. Nie mówi nic o tym, czy strona rzeczywiście działa – baza może akurat leżeć, treść się nie załadować, a monitoring patrzący wyłącznie na kod odpowiedzi niczego z tego nie zauważy.

Z tego założenia Piotr zbudował Strażnika Witryn – zgłoszenie na konkurs StormIT z okazji Dnia Programisty. Całość stoi w n8n i pilnuje jednocześnie czterech różnych rzeczy: dostępności, poprawności działania, integralności treści oraz wybranych aspektów bezpieczeństwa.

„Jest to automatyzacja przygotowana w n8n, której zadaniem jest monitorowanie stron internetowych nie tylko pod kątem dostępności, ale również poprawności działania, integralności treści oraz wybranych aspektów bezpieczeństwa.”

Co dokładnie wykrywa

  • ciche awarie mimo odpowiedzi HTTP 200,
  • brak kluczowych elementów strony,
  • znane zagrożenia zadeklarowanych zależności przez OSV API,
  • zmianę treści HTML na podstawie hasza SHA-256,
  • sygnatury charakterystyczne dla prób prompt injection – bez użycia modelu AI, samymi regułami,
  • a także wykonanie samego Strażnika, przez Healthchecks.io.
Schemat przepływu pracy Strażnika Witryn – dwa workflow n8n: demo do testów oraz właściwy monitoring z kontrolą każdej witryny, oceną bezpieczeństwa zależności i alertami

Jak to działa w n8n

Główny workflow, „Guardian Website Monitor”, startuje codziennie o 7:00. Po sygnale startowym do Healthchecks.io i wczytaniu konfiguracji z Google Sheets (arkusze Sites, Checks, Dependencies, Results, Runs) system buduje kontekst i wybiera aktywne witryny do sprawdzenia.

1

Pobranie strony i podstawowe kontrole

HTTP-001, MIME-001, TITLE-001, CTA-001, EMAIL-001 – zestaw kontroli sprawdzających, czy strona nie tylko odpowiada, ale ma na miejscu to, co powinna mieć.

2

Hash SHA-256 i porównanie z poprzednim

Treść HTML trafia przez funkcję kryptograficzną, a wynik porównywany jest z ostatnim zapisanym haszem – wykryta zmiana to CHANGE-001.

3

Skan bezpieczeństwa, jeśli potrzebny

Przy pierwszym uruchomieniu (baseline) albo po wykryciu zmiany treści system uruchamia Guardrails – dopasowanie słów kluczowych i własnych wyrażeń regularnych, bez udziału modelu AI – i ocenia wynik jako GUARD-001.

4

Kontrola zależności równolegle

Osobna gałąź odczytuje aktywne zależności witryny, odpytuje OSV API o znane podatności i zapisuje ocenę jako DEP-001.

5

Zapis i alert

Wyniki wszystkich kontroli trafiają do arkusza Results. Po sprawdzeniu wszystkich witryn system podsumowuje przebieg w arkuszu Runs i decyduje, czy wysłać mail z alertem – z tematem oznaczonym [FAIL], [CHANGE] albo [SECURITY] – czy zakończyć sygnałem sukcesu do Healthchecks.io.

Drugi workflow, „Guardian Demo Website”, to kontrolowane środowisko testowe uruchamiane przez webhook z parametrem trybu. Dzięki niemu Piotr może przełączać testową witrynę między czterema stanami – ok (pełna poprawna strona), silent_failure (HTTP 200, ale brak CTA), down (HTTP 503) i prompt_injection (HTTP 200 z ukrytą podejrzaną treścią) – i sprawdzać, czy Strażnik faktycznie rozpoznaje każdy z nich, bez konieczności psucia prawdziwej strony.

Panel Healthchecks.io dla Strażnika Witryn – historia przebiegów z uruchomieniami ręcznymi i porannym uruchomieniem automatycznym

Wersja konkursowa, z planem na dalej

Piotr traktuje to zgłoszenie jako wstępną wersję.

„Jest to wstępna wersja na potrzeby konkursu. W bardziej rozbudowanej wersji dodałbym jeszcze sprawdzanie certyfikatu SSL oraz jego ważności i wysyłanie powiadomień, gdy jego ważność będzie się kończyła.”

Do zgłoszenia dołączył komplet materiałów: opis rozwiązania w PDF, prezentację w PowerPoincie, pliki JSON z automatyzacjami gotowe do zaimportowania w n8n, ilustrację ze schematem całego przepływu, zrzut z Healthchecks.io oraz arkusz z konfiguracją. To poziom dokumentacji, jakiego można oczekiwać po kimś, kto myśli o swoim projekcie nie jako o jednorazowym demo, tylko jako o rozwiązaniu, które ktoś inny mógłby odtworzyć.

To kolejny z projektów, jakie kursanci StormIT budują w trakcie nauki. Zobacz pozostałe albo sprawdź, jak zacząć swój.

Chcesz wdrożyć to u siebie?

Praktyczne kursy i wdrożenia AI oraz automatyzacji. Albo zapisz się na newsletter, żeby nie przegapić nowych treści.