# DataFirefly Skimming Guard: anti-skimming i integralność plików

> Wprowadzenie DataFirefly Skimming Guard pilnuje kodu wysyłanego klientom sklepu PrestaShop 8 lub 9: plików, bazy danych, HTML wysyłanego na stronach płatności i tego, co robi przeglądarka w kasie. Wykrywa wstrzyknięte…

- Strona: <https://www.datafirefly.com/pl/documentation/dfskimguard/>
- Język: pl
- Zaktualizowano: 2026-09-30
- Inne języki: [fr](https://www.datafirefly.com/documentation/dfskimguard/index.md), [en](https://www.datafirefly.com/en/documentation/dfskimguard/index.md), [es](https://www.datafirefly.com/es/documentation/dfskimguard/index.md), [de](https://www.datafirefly.com/de/documentation/dfskimguard/index.md), [it](https://www.datafirefly.com/it/documentation/dfskimguard/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfskimguard/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfskimguard/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

## Wprowadzenie

DataFirefly Skimming Guard pilnuje kodu wysyłanego klientom sklepu PrestaShop 8 lub 9: plików, bazy danych, HTML wysyłanego na stronach płatności i tego, co robi przeglądarka w kasie. Wykrywa wstrzyknięte skrypty kopiujące numery kart (ataki w stylu Magecart), zmienione lub dodane pliki oraz pliki rdzenia PrestaShop różniące się od oficjalnego wydania. Uzupełnia [DataFirefly Admin Shield](https://www.datafirefly.com/pl/produkt/prestashop-back-office-security/), który chroni logowanie do panelu administracyjnego.

## Instalacja

1. W panelu otwórz **Moduły > Menedżer modułów > Załaduj moduł** i wyślij plik `dfskimguard-1.2.1.zip`.
2. Otwórz moduł. Jest też dostępny w **Zaawansowane > Skimming Guard**.
3. Kliknij **Skanuj teraz**. Pierwsze skanowanie zapisuje punkt odniesienia: odcisk SHA-256 każdego pliku oraz kopię plików motywu, widoków modułów i plików wejściowych.
4. Skonfiguruj zadanie zaplanowane (patrz niżej).
5. Wyślij alert testowy z przeglądu, aby sprawdzić odbiór.

Punkt odniesienia dla 16 000 plików powstaje na typowym serwerze w mniej niż minutę. Na hostingu z limitem 30 sekund na żądanie skanowanie samo dzieli się na krótkie kroki.

## Zadanie zaplanowane

Skanowanie działa w tle, nigdy podczas wizyty klienta. Trzy możliwości:

- **Adres cron**: skopiuj adres z bloku _Zadanie zaplanowane_ i wywołuj go co 15 minut z menedżera cron hostingu. Adres zawiera tajny token.
- **Wiersz poleceń**: z dostępem SSH uruchom `php modules/dfskimguard/cli.php`. Opcja `--full` wykonuje pełne skanowanie za jednym razem, bez limitu czasu.
- **Moduł cronjobs PrestaShop**: jeśli go używasz, zadanie uruchamia się co godzinę.

Każde uruchomienie rozpoczyna lub wznawia skanowanie plików, skanuje bazę danych co godzinę, sprawdza rdzeń PrestaShop raz w tygodniu, a zawartość skryptów zewnętrznych raz dziennie.

## Przegląd

Baner u góry każdej zakładki pokazuje wynik bezpieczeństwa od 0 do 100 i zdanie podsumowujące sytuację, ze skrótami do otwartych spraw. Przegląd zawiera dwie grupy kontroli, najpierw te niespełnione:

- **Konfiguracja ochrony**: aktualny punkt odniesienia, działające zadanie zaplanowane, odbiorcy alertów, koniec okresu nauki, blokowanie danych kart, Content Security Policy, sprawdzanie rdzenia, uzasadnienia skryptów płatności.
- **Zabezpieczenie sklepu**: tryb debugowania, folder instalacyjny, nazwa folderu admin, niebezpieczne pliki dostępne z sieci (kopie SQL lub ZIP, phpinfo, adminer, .git, .env, `eval-stdin.php` z PHPUnit), SSL na wszystkich stronach, wersja PHP, uprawnienia plików konfiguracyjnych.

Każdy niespełniony punkt wyjaśnia, jak go poprawić.

## Ochrona kasy

### Sprawdzanie wysyłanego HTML

Na stronach koszyka, kasy i płatności modułów moduł czyta HTML generowany przez PrestaShop. Zapisuje każdy zewnętrzny skrypt, iframe, cel formularza i domenę wskazaną w skrypcie inline oraz stosuje sygnatury zaciemnionego kodu (`eval(atob(...))`, `new Function`, łańcuchy `fromCharCode`, loadery skryptów, wykrywanie narzędzi deweloperskich). Domyślnie każda strona jest sprawdzana nie częściej niż co 5 minut. Zmień odstęp w ustawieniach albo monitoruj wszystkie strony sklepu.

### Strażnik przeglądarki

Skrypt o wadze 5,5 KB jest wstrzykiwany jako pierwszy w `` monitorowanych stron. Zgłasza nieznane domeny, z którymi łączy się strona, a na stronach płatności wykrywa prawidłowy numer karty wysyłany do niezatwierdzonej domeny, także zakodowany w base64. Numer nigdy nie trafia na serwer. Aby odfiltrować rozszerzenia przeglądarki, nieznana domena wywołuje alert dopiero po 3 różnych odwiedzających (do ustawienia); próba wysłania numeru karty jest zgłaszana od razu.

### Blokowanie danych kart

Opcja **Blokuj dane kart wysyłane do nieznanych domen**: żądanie jest anulowane, gdy zawiera numer karty i trafia do niezatwierdzonej domeny. Włącz ją po zakończeniu okresu nauki i zatwierdzeniu dostawców płatności.

### Content Security Policy

Moduł może wysyłać na monitorowanych stronach CSP zbudowaną z zatwierdzonych domen. Zacznij od trybu **Tylko raportowanie**, a potem przełącz na **Egzekwuj**, gdy nie pojawiają się nieoczekiwane domeny.

W trybie Egzekwuj każda niezatwierdzona domena jest blokowana, także nowy dostawca płatności. Zatwierdź go przed włączeniem.

### Okres nauki

Przez 48 godzin po instalacji zewnętrzne skrypty i domeny o niskim ryzyku są zatwierdzane bez alertu. Podejrzane nadal wywołują alert. Po zmianie motywu lub metody płatności uruchom naukę ponownie przyciskiem **Ucz się przez 48 godzin**.

### Zaufane domeny

Wbudowana lista obejmuje popularnych dostawców (Stripe, PayPal, Braintree, Adyen, Mollie, Klarna, Checkout.com, Worldpay, PayPlug, Stancer, Lyra, PayZen, Systempay, Monetico, Alma, Scalapay, SumUp, Redsys, HiPay, Apple Pay, Google Pay, reCAPTCHA, hCaptcha, Turnstile, Google Analytics, Tag Manager, Meta). Własne domeny dodasz w ustawieniach, jedną w wierszu; subdomeny są uwzględnione.

## Zakładka Skrypty i domeny

Zakładka wymienia każdy element wykryty na stronach: typ, domenę, stronę, wynik ryzyka i liczbę wystąpień. Trzy akcje:

- **Zatwierdź**: element i jego domena trafiają na listę zaufanych (strażnik i CSP). Dla skryptu stron płatności okno prosi o uzasadnienie.
- **Złośliwy**: strażnik blokuje domenę, a CSP ją wyklucza. Jeśli pojawi się ponownie, wysyłany jest alert krytyczny.
- **Usuń**: usuwa element ze spisu.

## Integralność plików

### Co jest monitorowane

Domyślne rozszerzenia: php, phtml, php5, php7, phar, inc, js, mjs, tpl, twig, html, htm, htaccess, ini, svg, ico. Domyślnie wykluczone ścieżki: var, cache, img, upload, download, .git, node_modules, pamięć podręczna motywu i kopie folderu admin. Token `{admin}` zostaje zastąpiony nazwą folderu administracyjnego.

Plik uznaje się za niezmieniony, jeśli jego rozmiar, czas modyfikacji i czas zmiany inode pozostały takie same. Czasu zmiany inode nie da się sfałszować poleceniem `touch`. Co 7 dni (do ustawienia) wszystkie odciski są przeliczane od nowa.

### Sygnatury

Każdy nowy lub zmieniony plik przechodzi przez sygnatury: znane web shelle, `eval` na zdekodowanych danych lub danych żądania, polecenia systemowe z danych żądania, PHP ukryty w obrazie lub pliku .ico, include pliku multimedialnego, `auto_prepend_file` dodany w .htaccess lub .user.ini, pliki multimedialne wykonywane jako PHP, pola karty odczytywane i wysyłane przez sieć. Plik o ryzyku 70 lub wyższym wywołuje natychmiastowy alert krytyczny; pozostałe zmiany trafiają do jednego podsumowania na skanowanie.

### Zakładka Pliki

- **Pokaż zmiany**: diff wiersz po wierszu między zatwierdzoną wersją a obecnym plikiem. W zminifikowanym JS w jednym wierszu pokazywany jest tylko wstawiony fragment.
- **Przywróć zatwierdzoną wersję**: przywraca kopię odniesienia. Zmieniona wersja zostaje w `var/dfskimguard/quarantine` jako dowód.
- **Zatwierdź**: przyjmuje obecny plik jako nowy punkt odniesienia. Zaznaczanie wielu plików i **Zatwierdź wszystkie zmiany** przydają się po aktualizacji.
- **Kwarantanna**: przenosi nowy podejrzany plik poza sklep. Można go przywrócić.

### Okno aktualizacji

Przed aktualizacją modułu lub motywu kliknij **Aktualizuję sklep (2 godz.)**. Przez dwie godziny pliki zmienione bez podejrzanego kodu stają się nowym punktem odniesienia bez alertu. Plik wysokiego ryzyka i tak wywoła alert.

## Sprawdzanie rdzenia PrestaShop

Zakładka **Rdzeń PrestaShop** pobiera z GitHub oficjalne źródło Twojej wersji i porównuje pliki PHP, TPL i Twig z `classes`, `controllers`, `src`, `config` oraz pliki PHP folderu admin. Pomijane są końce wierszy i ustawienia, które build wydania i tryb debugowania nadpisują w `config/defines.inc.php`. Moduł zgłasza też nieoczekiwane pliki PHP w `classes`, `controllers` i `src`.

Dla każdego zmienionego pliku: **Porównaj z oficjalnym**, a następnie **Przywróć oficjalną wersję**. Nieoczekiwany plik można przenieść do kwarantanny. Sprawdzanie powtarza się automatycznie co tydzień.

Serwer musi mieć dostęp do codeload.github.com. Jeśli połączenia wychodzące są zablokowane, sprawdzanie wyświetla komunikat o błędzie, a reszta modułu działa normalnie.

## Skanowanie bazy danych

Co godzinę moduł szuka znaczników script, obsługi onerror lub onload, adresów `javascript:` i zaciemnionego kodu w konfiguracji, stronach CMS, opisach produktów, kategorii, marek i dostawców oraz własnych blokach tekstu. Skrypt prowadzący do nieznanej lub oznaczonej domeny podnosi ryzyko.

## PCI DSS 6.4.3 i 11.6.1

Dla każdego autoryzowanego skryptu na stronach płatności moduł zapisuje uzasadnienie, pracownika, który go autoryzował, i datę. Przycisk **Uzasadnij** uzupełnia już zatwierdzony skrypt. Moduł monitoruje też:

- zawartość skryptów zewnętrznych stron płatności, pobieranych i analizowanych codziennie: zatwierdzona domena, która zaczyna serwować złośliwy kod, wywołuje alert krytyczny;
- nagłówki bezpieczeństwa stron płatności ustawiane przez PrestaShop i jego moduły (CSP, HSTS, X-Frame-Options, Permissions-Policy). Nagłówki dodawane przez serwer WWW nie są widoczne z PHP.

Przycisk **Raport PCI DSS** otwiera raport do druku: uzasadniony spis, aktywne mechanizmy wykrywania z datą ostatniego uruchomienia, zdarzenia z ostatnich 90 dni. **Eksportuj do CSV** daje surowy spis.

Raport wspiera ocenę PCI DSS. Nie potwierdza zgodności: decydujący jest agent rozliczeniowy lub audytor.

## Alerty

- **E-mail**: jeden lub kilka adresów, regulowany minimalny poziom (informacja, ostrzeżenie, krytyczny).
- **Webhook**: adres HTTPS otrzymujący JSON z polem `text` zgodnym ze Slackiem, do użycia z Teams lub własną usługą.
- **Bez duplikatów**: ten sam alert nie jest wysyłany ponownie przez 60 minut, a na godzinę wychodzi najwyżej 20 alertów (do ustawienia).
- **Baner w panelu**: dopóki alert krytyczny nie zostanie przeczytany, u góry panelu widać czerwony baner.
- **Raport tygodniowy**: wynik, alerty z tygodnia, oczekujące elementy i punkty do poprawy.

## Najczęstsze pytania

### Po aktualizacji modułu dostaję alerty

Zatwierdź zmiany w zakładce Pliki albo następnym razem użyj okna aktualizacji.

### Pojawia się nieznana domena, której nie rozpoznaję

Może pochodzić z rozszerzenia przeglądarki odwiedzającego. Dopóki nie zobaczy jej 3 różnych odwiedzających, nie wywołuje alertu. Jeśli to usługa, z której korzystasz, zatwierdź ją; w przeciwnym razie oznacz jako złośliwą.

### Gdzie są przechowywane kopie i kwarantanna?

Kopie odniesienia są skompresowane w bazie danych. Kwarantanna i oficjalne archiwum PrestaShop znajdują się w `var/dfskimguard`, chronionym plikiem .htaccess. Moduł nie skanuje tego folderu.

### Jak zacząć od nowa?

Link **Resetuj punkt odniesienia** usuwa punkt odniesienia plików; kolejne skanowanie tworzy nowy. Pliki w kwarantannie pozostają na liście i można je przywrócić.
