Zapora aplikacji internetowej (Web Application Firewall). Moduł Web Application Firewall blokuje niepożądane adresy IP, zakresy CIDR, całe kraje i złe boty, ogranicza liczbę żądań agresywnych klientów, chroni logowanie do panelu administracyjnego przed atakami brute force i zatrzymuje typowe wzorce ataków (SQLi / XSS / LFI / sondowanie). Zaufana lista dozwolonych z ochroną przed zablokowaniem własnego dostępu zapewnia bezpieczeństwo, a każde zablokowane żądanie jest rejestrowane. Bez kodowania i bez zmian w szablonie.
Moduł Web Application Firewall blokuje niepożądane adresy IP, zakresy CIDR, całe kraje i złe boty, ogranicza liczbę żądań agresywnych klientów, chroni logowanie do panelu administracyjnego przed atakami brute force i zatrzymuje typowe wzorce ataków (SQLi / XSS / LFI / sondowanie). Zaufana lista dozwolonych z ochroną przed zablokowaniem własnego dostępu zapewnia bezpieczeństwo, a każde zablokowane żądanie jest rejestrowane. Bez kodowania i bez zmian w szablonie.
1. Instalacja
- W panelu administracyjnym (back office) należy przejść do Modules → Module Manager → Upload a module i wybrać plik ZIP modułu.
- Po zainstalowaniu należy kliknąć Configure, aby otworzyć kreator konfiguracji.
.local, .test, localhost) są zawsze dozwolone. Gdy dostępna jest nowa wersja, widać to bezpośrednio w module.Jeśli zamiast potwierdzenia pojawi się komunikat „Upload failed”, PrestaShop mógł wyłączyć moduł bez powiadomienia: ustawienia i dane pozostają na swoim miejscu. Jak zaktualizować moduł i co zrobić, gdy pojawi się komunikat „Upload failed”.
2. Konfiguracja krok po kroku
Moduł jest podzielony na zakładki: Rules & whitelist, Blocked log, Login protection i Settings. Poniższe sekcje odpowiadają zakładce Settings, w której każda ochrona ma własny przełącznik.
General główny przełącznik
Przełącznik włącz/wyłącz dla całej zapory oraz sposób odczytu adresu IP klienta.
- Enable firewall: główny przełącznik. Wyłączony oznacza, że nic nie jest filtrowane w sklepie.
- Behind a proxy / CDN: należy włączyć tylko wtedy, gdy sklep rzeczywiście znajduje się za zaufanym proxy lub CDN. W przeciwnym razie nagłówki proxy można podrobić i atakujący mógłby sfałszować swój adres IP lub kraj.
- Trusted proxy header: który nagłówek zawiera rzeczywisty adres IP klienta: Auto (Cloudflare → X-Real-IP → X-Forwarded-For), CF-Connecting-IP, X-Real-IP lub X-Forwarded-For.

IP / CIDR blocking
Blokowanie pojedynczych adresów IP lub całych zakresów CIDR.
- Enable IP / CIDR blacklist: włącza blokowanie IP i zakresów.
- Właściwe wpisy czarnej i białej listy obsługuje się w zakładce Rules & whitelist. Adres IP lub CIDR z białej listy omija wszystkie pozostałe kontrole.

Country blocking
Zezwalanie odwiedzającym lub ich blokowanie według kraju (kody ISO-2).
- Enable country blocking: włącza filtr geograficzny.
- Mode: Block-list (blokuje wymienione kraje) lub Allow-list (dopuszcza tylko wymienione kraje).
- Country codes: kody ISO-2 oddzielone przecinkami, np.
RU, CN, KP. - GeoIP database path: opcjonalna ścieżka do własnego pliku MaxMind GeoLite2
.mmdb. Baza GeoIP nie jest dołączona (ograniczenia licencyjne); należy dostarczyć własną albo polegać na nagłówku kraju z CDN (np. CF-IPCountry), włączając „behind proxy/CDN”.

Bad bots / user-agents
Blokowanie znanych scraperów, skanerów i podejrzanych klientów według ich User-Agent.
- Enable user-agent blocking: włącza filtrowanie UA.
- Block empty user-agents: odrzuca żądania, które w ogóle nie wysyłają User-Agent.
- Extra blocked user-agent substrings: jeden fragment w wierszu; łączony z rozsądną wbudowaną listą znanych scraperów i skanerów.

Rate limiting
Ograniczanie klientów, którzy wysyłają zbyt wiele żądań w krótkim czasie.
- Enable rate limiting: włącza ogranicznik.
- Max requests per window: ile żądań może wysłać adres IP, zanim zostanie ograniczony.
- Window (seconds): okno przesuwne, w którym liczone są żądania.
- Temporary block duration (seconds): jak długo naruszający adres IP pozostaje zablokowany.

Attack-pattern blocking
Wykrywanie i blokowanie typowych sygnatur ataków w żądaniach.
- Enable attack-pattern blocking: blokuje wzorce SQLi, XSS, LFI i sondowania.
- Własne wzorce można dodać, a prawidłowe adresy URL, które w przeciwnym razie zostałyby dopasowane, dodać do białej listy w zakładce Rules & whitelist.

Back-office login protection
Ochrona logowania do panelu administracyjnego przed próbami brute force.
- Enable login protection: śledzi nieudane logowania do panelu administracyjnego według adresu IP i nazwy użytkownika.
- Max failed attempts, Attempt window (seconds) i Lockout duration (seconds): po zbyt wielu niepowodzeniach w oknie źródło zostaje tymczasowo zablokowane.
- Allow back office only from whitelisted IPs: ogranicza dostęp do panelu administracyjnego do adresów IP z białej listy. Najpierw należy upewnić się, że bieżący adres IP znajduje się na białej liście (strona pokazuje adres IP i ostrzega, jeśli go tam nie ma).

Maintenance & logging
Tryb blokady awaryjnej i dziennik zablokowanych żądań.
- Lockdown mode: dopuszcza dostęp do sklepu tylko adresom IP z białej listy (blokada awaryjna). Najpierw należy dodać własny adres IP do białej listy.
- Log blocked requests: rejestruje każde zablokowane żądanie (można je przeglądać i eksportować w zakładce Blocked log).
- Log retention (days): jak długo wiersze dziennika są przechowywane.
- Drop all data on uninstall: po włączeniu usunięcie modułu usuwa również jego reguły i dzienniki.

3. Sprawdzenie działania
- W zakładce Rules & whitelist baner pokazuje bieżący adres IP i informację, czy znajduje się na białej liście; należy go dodać przed włączeniem blokady awaryjnej lub opcji BO-whitelist-only.
- Należy dodać testowy fragment złego user-agenta, a następnie zażądać strony z tym User-Agent: powinna zostać zablokowana i pojawić się w Blocked log.
- Należy otworzyć zakładkę Blocked log: zablokowane żądania pojawiają się z adresem IP, krajem, przyczyną i URI; można je filtrować, eksportować do CSV lub wyczyścić dziennik.
- Zakładka Login protection wyświetla nieudane logowania do panelu administracyjnego i pozwala zdjąć blokadę jednym kliknięciem.
4. FAQ
Czy można zablokować samego siebie?
Zakładka Rules zawsze pokazuje bieżący adres IP i ostrzega, jeśli nie znajduje się na białej liście. Po dodaniu go do białej listy przed włączeniem blokady awaryjnej lub BO-whitelist-only nie ma możliwości zablokowania własnego dostępu.
Czy blokowanie krajów wymaga zewnętrznej usługi?
Nie. Odczytuje nagłówek kraju z CDN, gdy sklep znajduje się za proxy/CDN, lub korzysta z własnej bazy MaxMind GeoLite2. Dane GeoIP nie są dołączone, a z serwera nie wychodzą żadne wywołania.
Czy moduł spowalnia sklep?
Nie. Kontrole są lekkie i wykonywane na wczesnym etapie żądania; prawidłowi odwiedzający nie odczuwają żadnych skutków.
Czy trzeba edytować szablon?
Nie. Zapora działa przez standardowe hooki i jest zgodna z dowolnym szablonem.
