Zawartość artykułu
Kopia zapasowa DB (DataBase) w PrestaShop
Dziś trochę nietypowy temat. W PrestaShop w zasadzie od pierwszej wersji tego systemu było możliwe szybkie i proste pobieranie kopii bezpieczeństwa bazy danych (MySQL). Ogranicza się to wręcz do 1 kliknięcia w odpowiednim miejscu w panelu admina:
Potem wygenerowany w ten sposób plik (w formie spakowanej) można po prostu pobrać na swój dysk twardy. Jest to plik tekstowy w formacie SQL wygenerowany przez bazę danych MySQL. Zatem jego przeglądanie jest możliwe przez zwykły edytor tekstowy bez posiadania skomplikowanych narzędzi. Taki plik potem można wgrać bezpośrednio do phpMyAdmin i za jego pomocą przywrócić sklep do stanu z momentu tworzenia kopii bezpieczeństwa (uwaga stare dane zostaną wówczas bezpowrotnie utracone !)
Jakie dane można tam pobrać?
W zasadzie każde dane wpisane w sklepie przez jego twórców albo klientów:
- Dane klientów i ich adresy (nr. telefonu, e-mail, adres itp.)
- Skorelowane z klientem (adres e-mail) zamówiena czyli produkty
- Opisy produktów
- Ceny produktów
- Opisy kategorii
- Wiadomości wysłane przez klientów do obsługi sklepu
itd.
Warte zaznaczania, że hasła klientów/adminów są akurat bardzo dobrze chronione przez system PrestaShop. Nie są one podane w sklepie w formie „jawnej” a jako zaszyfrowane znaki które są zakodowane wbudowanym algorytmem szyfrującym na podstawie losowego ciągu znaków unikalnego dla każdej instalacji PrestaShop. Więc można powiedzieć jest to szyfr-szyfru. Nie można zatem ich nawet w formie zaszyfrowanej użyć w innych programach poza PrestaShop. Nawet samo odszyfrowanie tych haseł to proces na stan dzisiejszy niemożliwy – nawet przez super-komputery liczące.
Reasumując: Twoje hasło AlaMAkota+1998 jest bezpieczne i w każdej instalacji PrestaShop ma ono inną-unikalną formę losowych znaków… 😉
Dostęp do danych – wybrane sytuacje.
Dostęp do admina PrestaShop to tak naprawdę dostęp do całej bazy danych sklepu, które są dla zalogowanej osoby na wyciągnięcie ręki. Oczywiście, jeśli konto do zalogowania ma rangę admina a nie np. edytora. Jeśli jesteśmy jedynymi użytkownikami admina – to problem w zasadzie nie istnieje. Jednak inaczej to wygląda np. w takich sytuacjach:
- Zakup nowego szablonu lub modułu i prośba o pomoc developera. Kupujemy nowy szablon i natrafiamy na problem z danym modułem lub elementem szablonu. Zwracamy się do developera. On prosi o dostęp do panelu admina. Problem w tym, że na sklepie jest np. 100 000 zarejestrowanych klientów i obawiamy się wycieku ich danych. Nawet pobranie samych adresów e-mail może być problemem pod kątem późniejszej nieautoryzowanej wysyłki SPAM. Lub nawet samej sprzedaży tych danych..
- Nowy pracownik/stażysta w sklepie. Podobny scenariusz jak powyżej. Nie chcemy wycieku danych klientów z uwagi na przepisy RODO i konsekwencje z tym związane.
- Chcemy uchronić się przed sklonowaniem sklepu przez pobranie kopii bezpieczeństwa MySQL.
- Sklepem zarządza kilkadziesiat osób (takze adminów) i hipotetyczny wyciek danych jest trudny do opanowania / trudno przed nim się utrzec / trudno go wykluczyć i później namierzyć.
Możemy oczywiście stworzyć odpowiedni profil pracownika i tamtędy przydzielić lub nie dostęp do bazy. Jednak dla osoby z rangą admina nie możemy przyznać takich ograniczeń.
Dla właścicieli sklepów borykających się z tym problemem prezentujemy tutaj szybki i niezawodny sposób aby w 2 prostych krokach permanentnie zablokować możliwość tworzenia kopii bezpieczeństwa. Blokuje to zarówno wyświetlenie strony sklepu jak i sam controller (czyli element systemu odpowiedzialny za wyświetlenie tej podstrony i mechanizm tworzenia kopii).
Przedstawiamy też sposób jak to odblokować w przyszłości 😉
Blokada tworzenia kopii DB
1) Blokada cz.1 w MySQL
Wejdz do MySQL, wybierz Twoją bazę danych i wywołaj polecenie SQL:
UPDATE ps_tab SET active = 0 WHERE class_name = 'AdminBackup';
Oczywiście jak Twój prefix tabel jest inny niż
ps_odpowiednio skoryguj powyższe zapytanie
2) Blokada cz.2 w PHP
Edyduj plik:
classes/PrestaShopBackup.php
I zaraz na jego początku (w nowej linii po znaczniku na samym początku: <?php) wpisz:
die;
Wyswietli się biała strona. Możesz użyć też komunikatu tekstowego zamiast białej strony np:
die('Zrzut bazy danych jest zablokowany przez administratora systemu.');
Zdjęcie blokady tworzenia kopii DB
1) Odblokowanie cz.1 w MySQL:
Wywołaj zapytanie:
UPDATE ps_tab SET active = 1 WHERE class_name = 'AdminBackup';
2) Odblokowanie cz.2 w PHP:
Usuń z początku linkiję z
die;
Efekt działań
Po wykonaniu tych czynności zakładka ” Kopia zapasowa DB ” po prostu zniknie. Dodatkowo nie będzie można otworzyć jej „po linku” jeśli co sprytniejsi administratorzy będą chcieli tak tam się dostać 😉 Po prostu zobaczą albo białą stronę albo komunikat, który zdeklarujesz.



