Zabezpieczenie hasłem w PrestaShop: ukrywanie stron i produktów przed publicznym dostępem
„Ukryj to przed publicznym dostępem” brzmi jak jedno zadanie. W PrestaShop są to w praktyce cztery różne zadania w tym samym płaszczu, a wybór niewłaściwego rozwiązania kończy się tym, że sprzedawcy pokazują ceny hurtowe klientom detalicznym, „tajny” produkt przed premierą ląduje w mapie witryny, albo strona CMS jest chroniona jednym współdzielonym hasłem tak słabo, że równie dobrze mogłaby być otwarta. Platforma daje realne narzędzia do każdego z tych przypadków — grupy klientów, tryb B2B, widoczność produktu, tryb konserwacji — ale każde z nich ukrywa inne rzeczy, na innych warstwach i z zupełnie innymi gwarancjami. Ten poradnik pokazuje, który mechanizm pasuje do którego celu, gdzie dokładnie znaleźć go w panelu administracyjnym i gdzie kończy się „ukryte podczas przeglądania”, a zaczyna prawdziwe „bezpieczne”.
Jedną rzecz warto ustalić od razu, bo zmienia wszystkie rekomendacje poniżej: kontrola dostępu nie jest szyfrowaniem. Narzędzia widoczności w PrestaShop decydują, co przeglądarka odwiedzającego zobaczy; nie blokują samych plików leżących pod spodem. Wrócimy do miejsc, w których ta różnica potrafi zaboleć. Szersze zabezpieczenie całego sklepu — panelu administracyjnego, serwera, nagłówków — to osobny temat, dlatego ten wpis trzyma się swojego zakresu i odsyła do listy kontrolnej wzmacniania bezpieczeństwa PrestaShop.
Sprawdzone w czerwcu 2026 r. pod kątem działania grup klientów, trybu B2B, widoczności produktów i trybu konserwacji w PrestaShop 1.6, 1.7, 8 oraz 9, a także aktualnego modułu mprpasswordprotect.
Najpierw zdecyduj, co naprawdę chcesz ukryć
Zanim zmienisz jakiekolwiek ustawienie, nazwij cel — bo właściwy mechanizm wynika bezpośrednio z niego:
- Cały poziom odbiorców (kupujący hurtowi, członkowie, segment B2B) ma widzieć rzeczy, których nie powinni widzieć klienci detaliczni. To problem grup.
- Pojedynczy produkt ma istnieć, ale jeszcze nie pojawiać się podczas przeglądania ani w wyszukiwarce (przed premierą, próbka dostępna tylko z linku). To problem widoczności produktu.
- Cały sklep ma być niewidoczny, gdy go budujesz albo przygotowujesz wersję testową, z wyjątkiem dostępu dla Ciebie. To problem trybu konserwacji.
- Jedna konkretna strona (cennik, dokumentacja dla partnerów, landing page dla członków) ma być za hasłem. To problem hasła do strony — i właśnie na to PrestaShop nie ma natywnej odpowiedzi.
Wybierzesz złe narzędzie i albo przesadnie ograniczysz dostęp (płacący klienci B2C zostaną odcięci), albo ograniczysz go za słabo (prywatna treść trafi do indeksu Google). Poniższe sekcje omawiają każdy cel po kolei.
Metoda 1 — Grupy klientów: ukryj segment odbiorców, a nie pojedynczą rzecz
To najbardziej naturalna odpowiedź w PrestaShop i rozwiązanie, od którego większość sprzedawców powinna zacząć, gdy pytanie brzmi: „kto może to zobaczyć”. Dostęp kontroluje się na poziomie kategorii, a ograniczenie przechodzi na produkty w jej wnętrzu.
- Utwórz grupę w Shop Parameters → Customer Settings → Groups (np. „Hurt”, „VIP”, „Członkowie”).
- Otwórz ograniczoną kategorię i w panelu Group access odznacz trzy domyślne grupy dostarczane z PrestaShop — Visitor (niezalogowani odwiedzający, w tym roboty wyszukiwarek), Guest i Customer — zostawiając zaznaczoną tylko swoją prywatną grupę.
- Przypisz właściwych klientów do tej grupy (ręcznie na stronie klienta albo automatycznie — więcej o tym poniżej).
Dlaczego to jest czyste rozwiązanie: gdy grupa Visitor jest odznaczona, kategoria i jej produkty naprawdę znikają dla każdego, kto nie jest zalogowany do właściwej grupy. W standardowej nawigacji i wyszukiwarce PrestaShop nie pojawiają się w listach kategorii ani w wynikach wyszukiwania dla osób spoza odpowiedniej grupy — bo robot indeksujący jest grupą Visitor. Ukrywanie odbywa się na warstwie dostępu, więc przy normalnym przeglądaniu nie ma osobnego kroku „pamiętaj jeszcze o noindex”. Jedno zastrzeżenie warto powiedzieć wprost: zawartość mapy witryny zależy od modułu mapy/SEO i od sposobu przypisania produktów, więc produkt, który jest równocześnie w innej publicznej kategorii, albo nieostrożny moduł mapy witryny, nadal może ujawnić URL — zanim zaufasz ograniczeniu, sprawdź wygenerowaną mapę witryny i produkty przypisane do wielu kategorii. Co z tego wynika? Twoje ceny handlowe zostają między Tobą a zweryfikowanymi kupującymi, bez pilnowania pliku robots.
Uczciwe ograniczenie: grupy wymagają kont. Odwiedzający musi się zarejestrować i zostać przypisany do właściwej grupy, zanim cokolwiek zobaczy, więc pasuje to do relacji, które kontrolujesz (hurt, członkostwo), a nie do scenariusza „wyślę jeden link obcej osobie”. Jeśli chcesz ograniczyć ceny w całym sklepie, a nie kategoria po kategorii, służą do tego tryb B2B i przełącznik cen dla grup — o tym za chwilę.
Metoda 2 — Tryb B2B plus ukrywanie cen dla grup: pokaż ceny tylko klientom handlowym
PrestaShop ma wbudowany tryb B2B dostępny w Shop Parameters → Customer Settings → Enable B2B mode. Trzeba jednak precyzyjnie rozumieć, co on naprawdę robi, bo często przypisuje mu się zbyt wiele. Włączenie trybu dodaje do kont klientów pola B2B — Company, SIRET, APE, Allowed outstanding amount, Maximum number of payment days, Risk rating — oraz pozycję Authorized balance w menu Klienci. To właśnie natywny tryb B2B: dodatkowe pola firmowe i zaplecze do zarządzania kredytem kupieckim. Sam z siebie nie ukrywa cen i nie dodaje akceptacji kont — nowe rejestracje są aktywne od razu, tak jak zwykłe konta B2C.
Mechanizm, który faktycznie ukrywa ceny, jest oddzielny i znajduje się na poziomie grupy: otwórz grupę w Shop Parameters → Customer Settings → Groups i odznacz Show prices. Gdy ta opcja jest wyłączona dla grup Visitor (i Guest), niezalogowani odwiedzający nadal widzą katalog, ale bez cen i bez możliwości dodania do koszyka, natomiast zalogowani klienci handlowi z grupy, w której Show prices pozostaje zaznaczone, widzą wszystko. Jeśli naprawdę potrzebujesz ręcznie weryfikować każde nowe konto przed zakupem, ten etap akceptacji nie jest natywny — wymaga dodatkowego modułu rejestracji/akceptacji.
Właściwy natywny przepis na sklep tylko dla klientów handlowych to więc tryb B2B (dla pól firmowych i limitów kredytowych) połączony z grupowym przełącznikiem „Show prices” (do ograniczenia cen) — nie sam tryb B2B. Ten układ pasuje do portalu dystrybutora albo marki działającej wyłącznie hurtowo. Nie pasuje do mieszanego sklepu B2B/B2C, bo ukrycie cen przed grupą Visitor ukryje je także przed klientami detalicznymi, którzy przyszli prosto z ulicy, a klient detaliczny, który nie widzi ceny, zwykle po prostu wychodzi. W sklepach mieszanych nie blokuj cen w całym sklepie — użyj Metody 1 (grupa hurtowa dla kategorii handlowych) i zostaw katalog detaliczny otwarty.
| Chcesz… | Użyj | Dlaczego |
|---|---|---|
| Ukryć ceny hurtowe, ale zostawić katalog detaliczny otwarty | Grupy klientów (Metoda 1) | Ogranicza tylko kategorie handlowe; B2C pozostaje bez zmian |
| Utworzyć sklep wyłącznie dla klientów handlowych i ograniczyć ceny | Tryb B2B + wyłączone „Show prices” dla grupy (Metoda 2) | Pola B2B/limity kredytowe + ukrywanie cen dla grup; akceptacja kont wymaga modułu |
| Ukryć jeden produkt podczas przeglądania, ale zostawić działający link | Widoczność produktu (Metoda 3) | Działa na poziomie produktu i nie wymaga konta |
| Ukryć cały sklep, gdy jeszcze go budujesz | Tryb konserwacji (Metoda 4) | Wszystko albo nic, z listą dozwolonych adresów IP |
| Schować cały front sklepu za wspólnym hasłem | Moduł hasła (Metoda 5) | PrestaShop nie ma natywnego odpowiednika; współdzielone hasło dla konkretnych stron wymaga bardziej szczegółowej implementacji |
Metoda 3 — Widoczność produktu: ukryj jeden produkt bez zmiany kont
Każdy produkt ma ustawienie widoczności w zakładce Options (w starszej wersji 1.6 znajdowało się w obszarze SEO/powiązań). Cztery wartości robią różne rzeczy, a ich nazwy łatwo odczytać zbyt szybko:
- Everywhere — produkt jest widoczny w listach kategorii i możliwy do znalezienia w wyszukiwarce. Normalny stan.
- Catalog only — pojawia się podczas przeglądania kategorii, ale wewnętrzna wyszukiwarka go nie zwróci.
- Search only — pojawia się w wynikach wyszukiwania, ale nie jest listowany podczas przeglądania kategorii.
- Nowhere — strona produktu nadal istnieje pod swoim URL-em, ale nic w sklepie do niej nie linkuje. Brak kategorii, brak wyszukiwania, brak menu.
Nowhere to ustawienie dla produktów przed premierą i przypadków „pokaż kilku osobom”: strona jest aktywna, więc bezpośredni link działa, ale przypadkowy odwiedzający nie natknie się na nią w sklepie. Haczyk trzeba nazwać wprost — to ukrycie przez nieoczywistość, nie zabezpieczenie. URL można odgadnąć, jeśli Twoje slugi mają wzór, a produkt nadal może trafić do mapy witryny zależnie od używanego modułu mapy i jego konfiguracji — sprawdź wygenerowany XML, bo mapa witryny zawierająca taki produkt podaje „sekret” prosto Google. Traktuj „Nowhere” jako dobre rozwiązanie dla mało ryzykownej próbki przed premierą, nigdy jako ochronę czegokolwiek naprawdę ważnego. Czysty przepis na produkt przed premierą: ustaw widoczność na Nowhere, wyślij URL kilku osobom, które go potrzebują, a w dniu premiery przełącz na Everywhere.
Metoda 4 — Tryb konserwacji: ukryj cały sklep podczas budowy
W Shop Parameters → General → Maintenance możesz całkowicie wyłączyć front sklepu i zastąpić go stroną konserwacji, jednocześnie dopisując własne adresy IP do listy dozwolonych (pole Maintenance IP — „Add my IP” wpisuje adres, z którego aktualnie korzystasz), aby Ty i klient nadal widzieli działający sklep.
To naprawdę przydatne w dwóch momentach: gdy budujesz nowy sklep, którego nie chcesz jeszcze indeksować ani pokazywać, oraz gdy przygotowujesz przebudowę do podglądu przez klienta przed uruchomieniem. Czym to nie jest: systemem kontroli dostępu. Działa według zasady wszystko albo nic. Nie otworzysz jednej sekcji dla członków, zamykając resztę; każdy spoza listy IP zobaczy tę samą ścianę. Do trwałego scenariusza „członkowie widzą X, publiczność widzi Y” służą grupy (Metoda 1), nie tryb konserwacji. Gdy sklep jest w konserwacji, zwraca HTTP 503, czyli poprawny sygnał dla robotów: „wróć później”, a nie „tej strony już nie ma”.
Metoda 5 — Zabezpieczenie konkretnej strony hasłem (brak natywnej funkcji)

Bramkę hasła konfiguruje się z poziomu modułu, razem z pomijaniem pracowników i zachowaniem noindex.
Moduł Password Protect zatrzymuje żądania wcześnie przez hook dispatchera, zanim treść strony zostanie wyrenderowana:
public function getHooks()
{
return [
'actionDispatcherBefore',
];
}
Oto przypadek, którego platforma nie obsługuje. Nie ma natywnego ustawienia PrestaShop, które pozwalałoby schować jedną stronę CMS, kategorię albo produkt za prostym pytaniem o hasło. Natywne narzędzia są albo oparte na kontach (grupy), albo działają według zasady wszystko albo nic (tryb konserwacji). Aktualny moduł mprpasswordprotect również jest bramką dla całego frontu: przekierowuje żądania front-office i modułów na stronę wspólnego hasła, dopóki odwiedzający się nie uwierzytelni. Pasuje to do sklepów przed premierą i prywatnych frontów; nie obsługuje jeszcze celowania w pojedynczą stronę, kategorię ani produkt.
Dostarczony moduł przydaje się wtedy, gdy celem jest front sklepu chroniony hasłem: sklep przed premierą, prywatny podgląd katalogu albo tymczasowa przestrzeń do akceptacji przez klienta. Moduł używa hooka actionDispatcherBefore, sprawdza wspólne hasło, ustawia ciasteczko front-office i może zwracać odpowiedź 503/noindex, gdy bramka jest aktywna. Co to daje w praktyce? Cały front sklepu można ukryć za jednym wspólnym hasłem bez edycji core i bez tarcia związanego z kontami klientów. W przypadku cennika dealerskiego, jednej strony CMS, jednej kategorii albo jednego produktu użyj natywnych grup/widoczności produktu tam, gdzie konta są akceptowalne, albo potraktuj hasło na poziomie pojedynczych elementów jako brakującą funkcję, którą trzeba wdrożyć porządnie.
Warto jasno widzieć, czym wspólne hasło jest, a czym nie jest: to jeden sekret udostępniony wszystkim osobom, które go znają, bez ścieżki audytu dla poszczególnych użytkowników. To właściwy ciężar ochrony dla „umiarkowanie prywatnych treści o niskim zasięgu ryzyka” (sezonowy lookbook, karta dla partnerów). To niewłaściwy ciężar dla danych wrażliwych prawnie — o tym w nocie bezpieczeństwa poniżej.
Łączenie metod w realnych scenariuszach
Większość działających konfiguracji łączy dwie lub trzy z tych metod, bo cele często się nakładają:
- Katalog hurtowy: grupy klientów ograniczające kategorie handlowe + etap weryfikacji przed przyznaniem grupy + ceny specyficzne dla grup. Jeśli zbierasz też szczegóły zgłoszenia handlowego (numer VAT, typ działalności), schematy przechwytywania dodatkowych danych rejestracyjnych i działania na ich podstawie opisujemy we wpisie dodatkowe informacje o kliencie i blokady IP.
- Produkt przed premierą: widoczność ustawiona na Nowhere + wspólny link dla kilku osób + przełączenie na Everywhere w dniu premiery.
- Strona tylko dla członków: grupy klientów, jeśli członkowie mają już konta; hasło na poziomie jednej strony wymaga celowanej implementacji modułu, podczas gdy obecny moduł Password Protection chroni front sklepu jako całość.
- Nowy sklep wciąż w budowie: tryb konserwacji z Twoim adresem IP na liście dozwolonych aż do uruchomienia.
Pułapka SEO: ukryte w interfejsie, zaindeksowane w Google
Natywny PrestaShop nie generuje samodzielnie map witryny XML, więc wykluczenie trzeba ustawić w module mapy witryny, którego używasz, np. gsitemap albo Advanced SEO Sitemap Builder.

Bramka dostępu i reguły mapy witryny muszą mówić to samo.
Najczęstsza awaria w tym obszarze nie polega na tym, że ustawienie nie działa — tylko na tym, że „ukryta” strona po cichu pozostaje publiczna dla robotów. Dwie zasady pomagają utrzymać prywatne treści prywatnymi:
- Treści ograniczone grupą są domyślnie bezpieczne. Ponieważ robot jest nieuwierzytelnionym użytkownikiem z grupy Visitor, wszystko, co ukryjesz przed grupą Visitor, jest ukryte także przed Googlebotem. Nie potrzeba dodatkowego kroku.
- Widoczność „Nowhere” nie jest domyślnie bezpieczna. Strona nadal istnieje, a jeśli moduł SEO/mapy witryny ją uwzględnia, publikujesz URL w Google. Sprawdź, czy produkty bez linków są wykluczone z mapy witryny, a dla wszystkiego, co naprawdę musi pozostać prywatne, dodaj dyrektywę noindex zamiast polegać na „nikt do tego nie linkuje”.
Jeśli używasz pakietu SEO/mapy witryny, zanim zaufasz ograniczeniu, sprawdź, co faktycznie emituje — hojna mapa witryny potrafi cofnąć starannie ustawioną widoczność. I pamiętaj: strona za bramką hasła w ogóle nie powinna pojawić się w publicznej mapie witryny; bramka obsługuje ludzi, a wykluczenie z mapy obsługuje boty.
Gdzie kończy się kontrola dostępu, a zaczyna bezpieczeństwo
Tę granicę warto zapamiętać. Wszystko powyżej kontroluje, co przeglądarka widzi. Nic z tego nie szyfruje plików ani nie gwarantuje, że zdeterminowana osoba nie dotrze do zasobu pod spodem. Konkretnie:
- Obrazy produktu znajdują się pod przewidywalnymi URL-ami i mogą być dostępne bezpośrednio nawet wtedy, gdy strona produktu jest ograniczona, bo pliki obrazów nie przechodzą przez tę samą kontrolę dostępu co strona.
- Adres URL ustawiony jako „Nowhere” albo współdzielony link może wyciec przez historię przeglądarki, nagłówki referrer albo przez kogoś, kto prześle link dalej.
- Treść załadowana na stronę, ale ukryta CSS-em, nadal siedzi w źródle strony dla każdego, kto otworzy narzędzia deweloperskie.
Dlatego dla naprawdę poufnych materiałów — podpisanych umów cenowych, dokumentów prawnych, wszystkiego, gdzie ujawnienie jest realnym problemem — w ogóle nie opieraj się na widoczności frontu sklepu. Udostępniaj je z poprawnie zabezpieczonego systemu z prawdziwym uwierzytelnianiem i najlepiej z ochroną plików na poziomie serwera. Mechanizmy widoczności PrestaShop są zbudowane do komercyjnej kontroli dostępu (kto dostaje cenę hurtową), a nie do ochrony danych krytycznych dla bezpieczeństwa. Jeśli wzmacniasz sklep szerzej, reguły bezpieczeństwa i wydajności .htaccess omawiają ochronę plików i katalogów na warstwie serwera, a prosty poradnik zabezpieczania sklepu daje szerszy kontekst. Jeśli coś prywatnego już zostało ujawnione, następną stroną do przeczytania jest poradnik reagowania na wyciek danych.
Najczęściej zadawane pytania
Jak zabezpieczyć hasłem pojedynczą stronę CMS albo produkt w PrestaShop?
PrestaShop nie ma do tego natywnego ustawienia — natywne narzędzia są albo oparte na kontach (grupy klientów), albo działają według zasady wszystko albo nic (tryb konserwacji). Aktualny moduł mprpasswordprotect chroni cały front sklepu jednym wspólnym hasłem, co pasuje do sklepu przed premierą albo prywatnego podglądu, ale nie działa jeszcze na poziomie pojedynczej strony, kategorii ani produktu. Dla jednej strony, gdzie konta są akceptowalne, użyj grup klientów; prawdziwe hasło dla pojedynczego elementu to funkcja wymagająca konkretnej implementacji.
Czym różni się tryb B2B od ukrywania cen?
To oddzielne mechanizmy, które ludzie często wrzucają do jednego worka. Tryb B2B (Shop Parameters → Customer Settings) dodaje tylko pola firmowe i zaplecze do zarządzania kredytem — Company, SIRET, APE, dozwoloną kwotę zaległości, dni płatności, ocenę ryzyka. Nie ukrywa cen i nie dodaje akceptacji kont. Aby ukryć ceny, otwierasz grupę i odznaczasz Show prices dla grupy Visitor (oraz Guest). Sklep wyłącznie dla klientów handlowych potrzebuje obu rzeczy: trybu B2B dla pól i przełącznika grupy dla cen.
Jeśli ustawię produkt na „Nowhere”, czy jest prywatny?
Nie — to ukrycie przez nieoczywistość, nie bezpieczeństwo. Strona produktu nadal istnieje pod swoim URL-em, więc bezpośredni link działa; „Nowhere” oznacza tylko, że nic w sklepie do niej nie linkuje. URL można odgadnąć, jeśli Twoje slugi mają wzór, a zależnie od modułu mapy witryny adres może nadal zostać opublikowany w Google. Używaj tego dla mało ryzykownych próbek przed premierą, sprawdź, czy produkt jest wykluczony z wygenerowanej mapy witryny, i dodaj dyrektywę noindex dla wszystkiego, co naprawdę musi pozostać poza wyszukiwarką.
Czy ukrycie produktu lub kategorii usunie je też z Google?
To zależy od metody. Treści ograniczone grupą są domyślnie bezpieczne — robot jest nieuwierzytelnionym użytkownikiem Visitor, więc wszystko ukryte przed grupą Visitor jest ukryte także przed Googlebotem, bez dodatkowego kroku. Widoczność „Nowhere” nie jest domyślnie bezpieczna: strona istnieje, a hojny moduł mapy witryny może ponownie opublikować URL. Zawsze sprawdź XML, który faktycznie generuje Twój moduł mapy witryny, zanim zaufasz ustawieniu widoczności.
Czy mogę użyć tych narzędzi do ochrony prawnie wrażliwych dokumentów?
Nie. Każda metoda tutaj kontroluje, co przeglądarka widzi; żadna nie szyfruje plików. Obrazy produktów znajdują się pod przewidywalnymi URL-ami i mogą być dostępne nawet wtedy, gdy strona jest ograniczona, wspólne linki wyciekają przez historię i nagłówki referrer, a treść ukryta CSS-em nadal siedzi w źródle strony. W przypadku podpisanych umów, dokumentów prawnych albo czegokolwiek, gdzie ujawnienie byłoby realnym problemem, udostępniaj materiały z poprawnie zabezpieczonego systemu z prawdziwym uwierzytelnianiem i ochroną plików na poziomie serwera — nie przez widoczność frontu sklepu.
Wniosek: „ukryj to przed publicznym dostępem” rozkłada się na ukrycie segmentu odbiorców (grupy), pojedynczego produktu (widoczność), całego sklepu (konserwacja) albo jednej strony (moduł hasła) — a każde natywne narzędzie gwarantuje coś innego. Dopasuj narzędzie do celu, sprawdź dwa razy, czy mapa witryny po cichu nie publikuje ponownie tego, co ukrywasz, i nigdy nie myl mniejszej widoczności z zabezpieczeniem. Zrobisz to dobrze, a właściwa treść trafi do właściwych osób bez ani jednego prywatnego cennika pojawiającego się w czyichś wynikach wyszukiwania.
Komentarze
Brak komentarzy. Bądź pierwszy!
Bądź pierwszy: zadaj pytanie albo podziel się przydatną opinią.
Dodaj komentarz
Dodaj pytanie, szczegół montażu albo opinię, która może pomóc innemu czytelnikowi.