# Zmiana Prefiksu tabel bazy danych (Tutorial WordPress) Prefiks tabel bazy danych w WordPress to przedrostek występujący przed główną nazwą danej tabeli. Jego domyślne ustawienie, a właściwie brak zmiany to dość popularny błąd, który dzisiaj postaram się rozwiązać. Baza danych WordPress zawiera wszystkie informacje wymagane do jej funkcjonowania, a więc całą zawartość tekstową, opcje, klucze licencyjne i ustawienia. Nawet z pozoru niewielka zmiana może być tragiczna w skutkach. Wszystko zależy oczywiście od tego w jaki sposób i do czego atakujący tej bazy danych potrzebuje. [Zobacz Film VIDEO (Zmiana wtyczką)](https://jaworowi.cz/bezpieczenstwo-wordpress-prefix-db-14122.php#zmiana-prefiksu-bazy-danych-wtyczka) ## **Dlaczego powinieneś zmienić prefiks bazy danych w WordPress?** Przede wszystkim największym problemem domyślnego prefiksu bazy danych *wp_* jest to, że jest on… domyślny. Chodzi mi o to, że każdy wie jaki on jest i w pierwszej kolejności, aby przeprowadzić atak lub wyciągnąć informacje z bazy danych będzie próbował pobierać dane właśnie z tabel *wp_users*, *wp_post*, *wp_options* itd. ### **Przykładowe wykorzystywanie tej luki w zabezpieczeniach** - Atakujący może dowolnie zmieniać wpisy, w tym je usuwać, ale też (co się często zdarza) dopisywać złośliwy kod, - Atakujący może dowolnie zmieniać użytkowników – ich uprawnienia, hasła, ustawienia, ale też dodawać własnych o dowolnych uprawnieniach, - Atakujący uzyska dostęp do ukrytej domyślnie zawartości takiej jak np. wpisy prywatne czy strukturę katalogu mediów, nazwy plików i ich lokalizacje, - W przypadku sklepów może dowolnie zmieniać zamówienia, zmieniać im statusy, zawartość i inne atrybuty - Uzyskuje pełen dostęp do danych klientów, adresy email komentujących czy osoby zapisane na newsletter (jeżeli korzystasz z wtyczki), - Dostęp do kluczy licencyjnych i danych do połączenia z aplikacją zewnętrzną może mu posłużyć do wysyłania spamu, pozbawienia Ciebie licencji na dane rozwiązanie i wiele innych. Dwa ostatnie punkty zdecydowanie narażą Ciebie na nieprzyjemności związane z rozporządzeniem [RODO](https://jaworowi.cz/s/RODO), gdyż brak zmiany domyślnego ustawienia jest sprzeczny z zapisem wymagającym dołożenia należytej i maksymalnie możliwej staranności w ochronie danych. *Wystarczy zmienić prefiks bazy danych, aby się uchronić przed takimi niespodziankami. ## **Bezpieczny prefix w WordPress – czyli jaki?** Przede wszystkim nieoczywisty tzn. nic co łatwo można zgadnąć jak np. wordpress_*, nie zawierający nazwy domeny i losowy. Zdecydowanie zalecam prefiks dwuczęściowy np. *u89e_d2_* lub jak w dalszych przykładach *sec_prefix_*. ## **Zmiana prefiksu bazy danych: Ręcznie** Aby zmienić prefiks bazy danych bez użycia wtyczki, należy zalogować się do panelu zarządzania bazą danych np Adminer lub phpMyAdmin i otworzyć bazę danych, w której znajduje się WordPress. W pierwszym kroku należy zmienić nazwy wszystkich tabel, zamieniając domyślny prefiks na nowy, jednak przy dużej ilości tabel będzie to zadanie czasochłonne, ale i na to znajdzie się rozwiązanie. Będąc w phpMyAdmin lub Adminer (zrzuty poniżej) kliknij w SQL/Zapytanie SQL o następującej treści zmieniając pierwsze trzy atrybuty wg ustawień serwera: `SET @database = "nazwaBazyDanych"; SET @old_prefix = "stary_prefix_"; SET @new_prefix = "nowy_prefix_"; SELECT concat( "RENAME TABLE ", TABLE_NAME, " TO ", replace(TABLE_NAME, @old_prefix, @new_prefix), ';' ) AS "SQL" FROM information_schema.TABLES WHERE TABLE_SCHEMA = @database;` Zostanie wygenerowana lista wszystkich tabel wraz z listą komend. *Zapytanie SQL w bazie danych, które wygeneruje komendę do zmiany prefiksu Skopiuj poniższe komendy i wklej w to samo okno wydawania poleceń SQL. ![Zmiana prefixu bazy danych WordPress (adminer i phpmyadmin)](https://jaworowi.cz/wp-content/uploads/2019/11/Zrzut-ekranu-2019-11-4-o-03.39.39.png)Gotowa komenda dla zmiany prefixu tabel W efekcie zostaną zmienione wszystkie tabele. ![zapytanie sql do zmiany prefiksu bazy danych wordpress](https://jaworowi.cz/wp-content/uploads/2019/11/Zrzut-ekranu-2019-11-4-o-03.39.56.png)Zapytanie do BD zostało zakończone pomyślnie W phpMyAdmin wygląda to odrobinę inaczej, nad listą wygenerowanych tabel należy kliknąć „opcje” i wybrać „Pełne teksty” zatwierdzić i wywołać komendę jeszcze raz – w innym przypadku tekst komend będzie ucięty i wywoła błędy. ![Zmiana prefiksu bazy danych w WordPress poprzez phpmyadmin](https://jaworowi.cz/wp-content/uploads/2019/11/Zrzut-ekranu-2019-11-4-o-04.13.57.png) Na końcu pozostała zmiana prefiksu bazy danych w pliku [wp-config.php](https://jaworowi.cz/tag/wp-config-php) (plik zwykle znajduje się w głównym katalogu instalacji) tak jak poniżej: ![zmiana prefiksu bazy danych w pliku wp-config.php](https://jaworowi.cz/wp-content/uploads/2019/11/Zrzut-ekranu-2019-11-4-o-03.40.46.png)Zmiana prefiksu tabel w wp-config.php (zawierającym główne ustawienia WP) W przypadku braku dokonania tej zmiany WordPress wyświetli informacje o braku możliwości połączenia z bazą danych, gdyż nie znajdzie tabel. ## **Zmiana prefiksu bazy danych: wtyczka** Istnieje prosta wtyczka do zmieniania prefiksu bazy danych i wymaga jedynie instalacji, aktywacji oraz dokonania zmiany, aby na końcu ją usunąć. Wystarczy skorzystać z wtyczki [WP Prefix Changer](https://wordpress.org/plugins/wp-prefix-changer/)* co prezentuje na poniższym video: Zmiana prefixu bazy danych w WordPress – Poradnik Wtyczka ułatwia pracę o tyle, że wszystko wykonuje za nas, ale musimy być ostrożni i z uwagi na to, że baza danych może (choć nie musi) ulec uszkodzeniu koniecznie wykonaj kopię zapasową przed rozpoczęciem jakichkolwiek zadań! Gdy już wiesz jak zmienić prefiks tabel bazy danych w WordPress podziel się swoją opinią w komentarzu lub udostępnij innym :)