PS PrestaShop Średnio zaawansowany

Security Headers: nagłówki bezpieczeństwa i CSP dla PrestaShop 8 i 9

Instalacja i konfiguracja Security Headers: tryb testowy, CSP i naruszenia, nonce i ocena A+, HSTS, Permissions-Policy, skaner, alerty i historia.

Zaktualizowano Wersja modułu 1.1.0

DataFirefly Security Headers wysyła nagłówki bezpieczeństwa HTTP z PrestaShop 8 i 9: Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy i Cross-Origin-Opener-Policy. Moduł konfiguruje się w Zaawansowane > Nagłówki bezpieczeństwa, w sześciu kartach: Pulpit, Ogólne i tryb testowy, Content-Security-Policy, HSTS i inne nagłówki, Permissions-Policy oraz Naruszenia CSP.

Instalacja

  1. W Moduły > Menedżer modułów kliknij Załaduj moduł i wyślij plik ZIP.
  2. Moduł instaluje się w trybie testowym, z CSP w trybie Report-Only i włączonym zbieraniem naruszeń: żaden odwiedzający nie jest blokowany.
  3. Otwórz Zaawansowane > Nagłówki bezpieczeństwa. Link Konfiguruj w menedżerze modułów prowadzi w to samo miejsce.

Uruchomienie produkcyjne krok po kroku

Lista Uruchomienie produkcyjne na pulpicie prowadzi przez te kroki i pokazuje ich stan.

  1. Wskaż urządzenia testowe. Karta Ogólne i tryb testowy: kliknij Dodaj mój adres IP albo skopiuj link testowy i otwórz go na telefonie.
  2. Zaznacz używane usługi na karcie Content-Security-Policy, w bloku Usługi zewnętrzne.
  3. Przejrzyj sklep z urządzenia testowego: strona główna, kategoria, karta produktu, koszyk, proces zamówienia aż do płatności, konto klienta. Naruszenia pojawiają się na karcie Naruszenia CSP w ciągu kilku minut.
  4. Obsłuż naruszenia: zezwól na prawidłowe źródła, zignoruj pozostałe.
  5. Przełącz CSP na Wymuszaj, gdy przez 24 godziny nie pojawi się nowe naruszenie.
  6. Kliknij Podgląd produkcyjny na pulpicie, aby zobaczyć ocenę bez trybu testowego, a następnie wyłącz tryb testowy.
  7. Sprawdź w publicznym skanerze, takim jak securityheaders.com lub Mozilla Observatory, po wyczyszczeniu cache CDN, jeśli z niego korzystasz.

Tryb testowy

Dopóki tryb testowy jest włączony, każde żądanie jest obsługiwane na jeden z tych sposobów:

  • Urządzenia testowe (IP z listy lub przeglądarka otwarta linkiem testowym): wszystkie nagłówki, CSP wymuszona niezależnie od wybranego trybu, HSTS ograniczony do 5 minut i bez preload.
  • Pozostali odwiedzający: tylko CSP w trybie Report-Only, jeśli zbieranie naruszeń jest włączone. Nic nie jest blokowane, ale ich przeglądarki zgłaszają, co zostałoby zablokowane.

Po wyłączeniu trybu testowego wszyscy odwiedzający otrzymują pełną konfigurację.

Lista IP przyjmuje adresy IPv4 i IPv6 oraz zakresy CIDR, jeden w wierszu. Link testowy oznacza przeglądarkę, która go otworzy, jako urządzenie testowe na 24 godziny, co przydaje się dla telefonu w sieci komórkowej ze zmiennym IP. Otwórz ten sam adres z ?dfsh_test=off, aby zakończyć wcześniej. Utwórz nowy link unieważnia poprzednie linki.

Opcja Stosuj w panelu administracyjnym wysyła w panelu HSTS, X-Frame-Options z wartością SAMEORIGIN, X-Content-Type-Options i Referrer-Policy. CSP i Permissions-Policy nigdy nie są tam stosowane.

Content-Security-Policy

Dyrektywy

Każda dyrektywa przyjmuje źródła oddzielone spacjami lub znakami nowej linii: słowa kluczowe ('self', 'none', 'unsafe-inline', 'unsafe-eval'), hosty (https://www.example.com, *.example.com), schematy (data:, https:), nonce i skróty. Brakujące apostrofy wokół słów kluczowych są dodawane. Nieprawidłowa wartość jest odrzucana i zgłaszana przy zapisie. Pusta dyrektywa pobierania korzysta z default-src; pozostałe puste dyrektywy nie są wysyłane.

Usługi zewnętrzne

Każda zaznaczona usługa dodaje swoje domeny do potrzebnych dyrektyw, bez zmiany Twoich wpisów: Google Analytics 4 i Tag Manager, Google Ads, Google Fonts, reCAPTCHA, Google Maps, YouTube, Vimeo, Meta Pixel, TikTok, Pinterest, Stripe, PayPal, Mollie, Cookiebot, Axeptio, Hotjar, Microsoft Clarity, Trustpilot i Crisp. Dostawcy czasem zmieniają domeny: po włączeniu usługi sprawdź kartę naruszeń.

Opcje

  • Uwzględnij serwery multimediów: dodaje serwery ustawione w Zaawansowane > Wydajność do dyrektyw obrazów, skryptów, stylów, czcionek i multimediów.
  • Podnoś niezabezpieczone żądania: wysyła upgrade-insecure-requests w trybie Wymuszaj, w sklepie na https.
  • Adresy URL wyłączone z CSP: jeden fragment adresu URL w wierszu. CSP nie jest wysyłana, gdy żądany adres zawiera jeden z nich, na przykład problematyczną stronę powrotu z płatności.

Nonce i ocena A+

Domyślna konfiguracja pozostawia 'unsafe-inline' w script-src, ponieważ motywy PrestaShop używają skryptów inline. Skanery ograniczają wtedy ocenę do A. Aby celować w A+:

  1. W bloku Ścisła CSP z nonce włącz Dodawaj nonce do skryptów przy aktywnym trybie testowym.
  2. Moduł generuje losowy nonce na każdej stronie, dodaje go do wszystkich znaczników <script> i usuwa 'unsafe-inline' z script-src.
  3. Przejrzyj sklep i obsłuż naruszenia. Skrypty wstawiane później przez JavaScript bez nonce pojawiają się w dzienniku, na przykład niestandardowe tagi HTML w Google Tag Manager, które muszą używać zmiennej nonce GTM.
  4. Gdy dziennik nie pokazuje już naruszeń eval, usuń 'unsafe-eval' z script-src.

Opcja Zachowaj wbudowane procedury obsługi zdarzeń dodaje script-src-attr 'unsafe-inline', aby atrybuty onclick dalej działały. Pozostaw ją włączoną, chyba że motyw i moduły ich nie używają; niektóre publiczne skanery ją zgłaszają.

Moduł pełnego cache stron zapisuje HTML z nonce pierwszego odwiedzającego, który nie pasuje do kolejnych. Wyłącz te strony z cache lub pozostaw nonce wyłączony. Natywny cache PrestaShop nie jest tym objęty.

Dla programistów: nonce strony jest dostępny w Smarty jako {$dfsh_nonce}, a w PHP przez DfSecurityHeaders::getNonce(). Jest automatycznie dodawany do znaczników script w wyjściu HTML; te odwołania służą do kodu generowanego poza tym wyjściem.

Dziennik naruszeń

Raporty przeglądarek są grupowane według dyrektywy i zablokowanego źródła, z liczbą wystąpień, datą ostatniego zgłoszenia, przykładową stroną oraz, dla kodu inline, jego pierwszymi znakami. Rozszerzenia przeglądarki są pomijane. Adresy URL są zapisywane bez parametrów i żaden adres IP nie jest przechowywany.

  • Zezwól dodaje źródło do właściwej dyrektywy. Jeśli dyrektywa była pusta, najpierw przejmuje źródła z default-src.
  • Ignoruj usuwa wiersz bez zmiany CSP.
  • Pola wyboru pozwalają użyć Zezwól na zaznaczone lub Ignoruj zaznaczone. Przyciski dyrektyw i pole wyszukiwania filtrują listę.

Zezwolenie na naruszenie inline lub eval dodaje 'unsafe-inline' lub 'unsafe-eval', co osłabia zasady: lepiej przenieść skrypt do pliku. Przy aktywnym nonce skryptów inline bez nonce nie można zezwolić automatycznie. Naruszenia niewidziane od 30 dni są usuwane automatycznie.

HSTS i inne nagłówki

  • HSTS: czas od 5 minut do 2 lat, domyślnie 1 rok. Przeglądarki pamiętają nagłówek przez cały ten czas i odrzucają http. includeSubDomains wymusza https na wszystkich subdomenach: włącz tylko, jeśli wszystkie go obsługują. preload jest wysyłany tylko z includeSubDomains i co najmniej 1 rokiem; zgłaszaj domenę do hstspreload.org tylko, gdy masz pewność, usunięcie z listy trwa miesiącami.
  • X-Frame-Options: zalecane SAMEORIGIN; DENY blokuje też ramki iframe Twojego sklepu.
  • X-Content-Type-Options: wysyła nosniff.
  • Referrer-Policy: domyślnie strict-origin-when-cross-origin.
  • Cross-Origin-Opener-Policy: domyślnie wyłączona; same-origin-allow-popups zachowuje działanie okien płatności PayPal.
  • Usuń nagłówek X-Powered-By ukrywa wersję PHP ujawnianą przez niektóre serwery.

Permissions-Policy

Dla każdej z 19 funkcji: Zablokowane wyłącza ją wszędzie, Tylko ta witryna zezwala na nią w Twojej domenie i podanych dodatkowych źródłach, Wszystkie witryny ją otwiera, Nie ustawiono zachowuje domyślne działanie przeglądarki. Funkcje, których sklep nie potrzebuje (kamera, mikrofon, geolokalizacja, czujniki, USB…), są domyślnie zablokowane, a payment jest ograniczone do witryny. Usługa Stripe sama dodaje swoje źródło do payment.

Skaner i ocena

Analizuj bieżące nagłówki pobiera stronę sklepu z serwera i pokazuje ocenę, szczegóły dla każdego nagłówka, wycieki informacji i surowe nagłówki. Analizować można tylko domeny sklepu. Podgląd produkcyjny symuluje konfigurację bez trybu testowego. Ocena stosuje tę samą wagę co publiczne skanery i ma charakter orientacyjny. Ostatnia analiza i historia ocen pozostają widoczne po odświeżeniu.

Alerty o blokadach

Na karcie Ogólne i tryb testowy włącz Alerty email i podaj do 5 odbiorców. Przy wymuszonej CSP i wyłączonym trybie testowym każdy faktycznie zablokowany zasób, którego wcześniej nie widziano, powoduje wysłanie wiadomości z dyrektywą, źródłem i stroną. Nowe pozycje są grupowane, najwyżej jedna wiadomość na godzinę. Wyślij wiadomość testową sprawdza konfigurację; jeśli nic nie dotrze, sprawdź Zaawansowane > E-mail.

Historia, eksport i import

Każda zmiana zachowuje poprzednie ustawienia z datą, pracownikiem i różnicami względem obecnego stanu. Przechowywanych jest 15 ostatnich wersji; Przywróć wraca do jednej z nich, a zastąpiony stan trafia do historii.

Pobierz ustawienia tworzy plik JSON bez tajnych tokenów, do zaimportowania w innym sklepie, na przykład ze środowiska testowego na produkcję. Import zawsze włącza tryb testowy. Testowe adresy IP są importowane razem z ustawieniami: sprawdź je.

Cache, CDN i nagłówki serwera

  • CDN lub cache stron może serwować stare nagłówki: czyść go po każdej zmianie.
  • Jeśli hosting lub Cloudflare już dodaje nagłówki, skaner zgłasza duplikaty. Usuń je po stronie serwera lub wyłącz nagłówek w module.
  • Aby nagłówkami zajmował się serwer, skopiuj blok Apache lub Nginx z pulpitu, a następnie wyłącz moduł. Raportowanie naruszeń i nonce, które zależą od modułu, nie są uwzględnione.

W razie problemów

  • Strona przestała działać: przywróć poprzednią wersję z historii lub przełącz CSP z powrotem na Report-Only na czas poprawki.
  • Wyłączenie wszystkiego: wyłącz Wysyłaj nagłówki bezpieczeństwa na karcie Ogólne albo cały moduł.
  • HSTS: przeglądarka, która otrzymała HSTS, odrzuca http do końca ustawionego czasu, nawet po wyłączeniu modułu. Dlatego urządzenia testowe otrzymują tylko 5 minut.
Czy ta strona była pomocna?

Nadal utknąłeś? Napisz do wsparcia