Zaawansowany przewodnik programisty dotyczący pliku wp-config.php
Opublikowany: 2022-09-28 Jak dobrze znasz wp-config
? W tych kilku linijkach PHP jest zaskakująca moc! Ten artykuł jest przewodnikiem po niektórych fragmentach wp-config
, o których być może nie wiedziałeś, ale naprawdę powinieneś.
Czy wiesz wszystko , co trzeba wiedzieć o pliku wp-config.php
? Czy przeczytałeś o tym całą stronę dokumentacji WordPressa? Do samego końca?
Jeśli znasz już podstawy wp-config
, przeczytanie oficjalnej dokumentacji WordPressa będzie prawdopodobnie dobrą zabawą w drzemkę.
Jeśli chcesz prawdziwych przysmaków dla programistów, ładnie pogrupowanych według tematów i dostarczonych z czymś, co można nazwać „całkowicie niepotrzebnym entuzjazmem nad kilkoma stałymi PHP”, trzymaj się: mam zamiar sprawić, że wp-config.php
znów będzie fajny.
Spis treści
- Kto powinien to przeczytać?
- Dlaczego powinieneś to przeczytać?
- Podstawy
- Przeglądanie stałych wp-config
- Podział procesu ładowania
wp-config.php
- wp-config można przenieść w górę
- Ekran konfiguracji ładuje się, jeśli nie ma pliku wp-config.php
- wp-config.php ładuje się bardzo wcześnie
- Nie zadzieraj z wp-config.php!
- Sprawdzanie/linting pliku wp-config.php
- Zabezpieczanie WordPressa za pomocą wp-config.php
- Ochrona wp-config.php przed odwiedzającymi witrynę
- Obrotowe klucze/sole
- Przenoszenie i ukrywanie rzeczy
- Wyłączanie edytorów plików
- Wyłączanie automatycznych aktualizacji
- Zapobieganie zewnętrznym żądaniom HTTP
- Przenoszenie rzeczy
- Przenoszenie tabel użytkownika i Usermeta
- Przenieś zawartość, przesłane i katalogi wtyczek
- Ustawienia dotyczące treści
- Zmień adresy URL witryny i pulpitu nawigacyjnego
- Ustawienia posta
- Po rewizjach
- Zmiana interwału autozapisu
- Zawijanie
Kto powinien to przeczytać?
Ten artykuł jest skierowany do programistów i zaawansowanych użytkowników, którzy już wiedzą, jak edytować plik wp-config.php
i są świadomi niektórych ustawień konfiguracyjnych, które można w nim umieścić.
Nie powiem ci, jak edytować plik za pomocą FTP lub cPanel, ani dlaczego nie powinieneś używać MS Word do jego edycji.
Nie powiem ci, jak skonfigurować bazę danych ani przejrzeć starszych ustawień, których używałeś w 2013 roku, ale naprawdę nie powinieneś ich więcej potrzebować. A większość gospodarzy i tak zajmie się za Ciebie podstawami.
Jeśli jesteś nowy w wp-config.php
, nie brakuje przewodników, które dadzą ci podstawy, lub zawsze możesz zagłębić się w oficjalną dokumentację.
Dlaczego powinieneś to przeczytać?
Tak, tak, słyszę cię. Jeśli podstawowe szczegóły tego, co możesz umieścić w tym artykule, są omówione w innym miejscu, a Twój gospodarz i tak zajmuje się większością podstaw, dlaczego miałbyś to przeczytać? I rzeczywiście, dlaczego spędzam czas na pisaniu tego?
Cóż, jeśli jesteś zadowolony z edycji wp-config.php
i znasz podstawy tego, co robi, to prawdopodobnie jesteś przynajmniej średniozaawansowanym programistą WordPress.
Prawdopodobnie przynajmniej częściowo odpowiadasz za hosting dużych witryn, prawdopodobnie dla klientów. Musisz więc wiedzieć, jak możesz użyć tego pliku w nagłych wypadkach. I mieć wystarczająco dużo zrozumienia tego pliku, że jeśli go edytujesz, nie zrobisz nic złego.
Ponadto prawie na pewno będziesz chciał zablokować niektóre funkcje WordPressa poza tym, co Twój host pozwoli Ci skonfigurować automatycznie.
Prawdopodobnie są rzeczy, o których nawet nie wiesz, że możesz zrobić z wp-config.php
! Niektóre „Aha!” chwile, które należy przeżyć.
Ten artykuł jest przydatnym punktem odniesienia do konfiguracji niektórych wewnętrznych elementów WordPressa. Czytaj dalej, dodawaj do zakładek i udostępniaj znajomym i współpracownikom.
Podstawy
Powiedziałem, że to nie jest artykuł dla początkujących, ale powinniśmy ustalić podstawowe fakty, aby upewnić się, że jesteśmy w tym samym punkcie wyjścia.
Plik wp-config.php
znajduje się w katalogu głównym instalacji WordPressa (może znajdować się w innych miejscach, ale do tego dojdziemy), ładuje się jako część inicjalizacji WordPressa i umożliwia konfigurację rdzenia WordPressa.
Jest to niezbędne do działania WordPressa. Przechowuje zestaw stałych, które pozwalają określić:
- Połączenie z bazą danych i prefiks tabeli, których używa WordPress.
- Informacje zabezpieczające, takie jak sole i klucze uwierzytelniania.
- Ustawienia innych funkcji rdzenia WordPress, takich jak
WP_CACHE
iWP_DEBUG
. - Ustawienia wtyczek, które mogą dodawać własne opcje do pliku.
- Własne opcje konfiguracji.
Co najważniejsze, wp-config.php
jest plikiem specyficznym dla środowiska. Jego zawartość może (i powinna!) być różna dla różnych witryn. Nawet lokalne, tymczasowe i aktualne kopie tej samej witryny będą miały w pliku różne wartości.
WordPress jest dostarczany z plikiem wp-config-sample.php
, który zawiera minimum szczegółów potrzebnych do działania WordPressa. Możesz skopiować to do własnego wp-config.php
w ramach instalacji, ale w dzisiejszych czasach zwykle robi się to za Ciebie.
Na koniec zwróć uwagę, że możliwe jest, że po otwarciu pliku wp-config.php
z istniejącej witryny możesz zobaczyć stare stałe PHP dla starszych funkcji, takich jak domyślne uprawnienia do plików i poświadczenia FTP do uruchamiania aktualizacji. Nie będziemy ich tutaj omawiać, ponieważ jest mało prawdopodobne, że będziesz musiał ich użyć.
Przeglądanie stałych wp-config
Istnieje kilka sposobów na szybkie sprawdzenie wartości stałych WordPressa bez połączenia SSH ze zdalnym serwerem i otwierania pliku.
Funkcja kondycji witryny w rdzeniu WordPressa pozwala wyświetlić podstawowe wartości, przechodząc do menu Narzędzia -> Kondycja witryny -> Informacje -> Stałe WordPress. Stałe bazy danych można również zobaczyć w sekcji „Baza danych” na tej samej stronie.
Wtyczka Query Monitor ma panel „Środowisko”, w którym można zobaczyć niektóre powszechnie używane stałe wp-config
.
WP-CLI, interfejs wiersza poleceń WordPress, ma polecenie wp config
, którego można użyć do pobierania i ustawiania stałych w wp-config.php
. Zwykle wymagałoby to najpierw SSH, ale jeśli skonfigurujesz aliasy w konfiguracji WP-CLI, możesz utworzyć szybki skrót do przeglądania i modyfikowania stałych w zdalnych plikach wp-config
.
Podział procesu ładowania wp-config.php
Warto wiedzieć, kiedy ładuje się plik wp-config.php
, ponieważ określa to niektóre rzeczy, które można z nim zrobić, a których nie. Dobrym ćwiczeniem jest prześledzenie procesu ładowania:
WordPress zaczyna się ładować z plikiem
index.php
. Wymaga to plikuwp-blog-header.php
.Prawie pierwszą rzeczą, którą robi
wp-blog-header.php
, jest ładowaniewp-load.php
.Następnie
wp-load.php
ustawia stałą ABSPATH (podstawowy katalog główny WordPressa) i inicjujeerror_reporting()
przed załadowaniemwp-config.php
.
Ten proces ładowania, aw szczególności kod w wp-load.php
, może nas nauczyć kilku interesujących rzeczy. Oto ten kod:
/* * If wp-config.php exists in the WordPress root, or if it exists in the root and wp-settings.php * doesn't, load wp-config.php. The secondary check for wp-settings.php has the added benefit * of avoiding cases where the current directory is a nested installation, eg / is WordPress(a) * and /blog/ is WordPress(b). * * If neither set of conditions is true, initiate loading the setup process. */ if ( file_exists( ABSPATH . 'wp-config.php' ) ) { /** The config file resides in ABSPATH */ require_once ABSPATH . 'wp-config.php'; } elseif ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! @file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) ) { /** The config file resides one level above ABSPATH but is not part of another installation */ require_once dirname( ABSPATH ) . '/wp-config.php'; } else { // A config file doesn't exist. // [Code here to load the setup screen for in-browser configuration] }
Co tu widzimy?
wp-config.php można przenieść w górę
Po pierwsze, komentarz mówi nam, że możemy umieścić wp-config.php
w „korzeń WordPressa”. Nie wspomina o tym, że „root” może być w rzeczywistości katalogiem powyżej ABSPATH
, w którym znajduje się wp-load.php
.
Możemy zobaczyć to dodatkowe sprawdzenie w elseif
, gdzie szuka dirname( ABSPATH ) . '/wp-config.php'
dirname( ABSPATH ) . '/wp-config.php'
. Dodatkowy warunek w elseif
wyjaśniono w komentarzu.
Ekran konfiguracji ładuje się, jeśli nie ma pliku wp-config.php
Po drugie, widzimy, że jeśli plik konfiguracyjny nie istnieje, załaduje ekran konfiguracji.
Jest całkiem możliwe, że nigdy wcześniej nie widziałeś tego ekranu. Umożliwia wprowadzenie wstępnych informacji konfiguracyjnych, takich jak poświadczenia bazy danych, w internetowym interfejsie użytkownika:
To cecha WordPressa, o której warto wiedzieć. Jeśli kiedykolwiek umieściłeś podstawowe pliki WordPressa na publicznie dostępnym serwerze internetowym, ale nie utworzyłeś pliku wp-config.php
, wtedy ktoś inny (lub, co bardziej prawdopodobne, bot) może przyjść i skonfigurować WordPressa po swojemu i ewentualnie narazić na szwank Twój hosting.
wp-config.php ładuje się bardzo wcześnie
Trzecią rzeczą, na którą należy zwrócić uwagę, jest to, że wp-config.php
jest ładowany bardzo wcześnie w sekwencji startowej WordPressa. To znaczy że:
Jest wiele rzeczy, których nie możemy zrobić w
wp-config.php
. Na przykład nie możemy tutaj dodać zaczepów (akcji lub filtrów), ponieważ funkcje i struktury danych do tego nie zostały jeszcze załadowane. I nie mamy dostępu do żadnych wewnętrznych funkcji, obiektów i interfejsów API WordPressa.Mamy dużą kontrolę nad tym, co dzieje się dalej. Ponieważ plik jest ładowany tak wcześnie, ma duży wpływ na WordPressa. To jest zarówno dobre, jak i złe. Możemy łatwo sprawić, że WordPress całkowicie zginie. Ale możemy również uzyskać dostęp do wszystkiego, co jest zdefiniowane w
wp-config.php
z praktycznie dowolnego miejsca w WordPress.
Nie zadzieraj z wp-config.php!
Ostatnią rzeczą, jakiej uczymy się z tego procesu, jest to, że z tą wielką mocą wiąże się wielka odpowiedzialność.
Na dole pliku wp-config.php
znajdują się następujące wiersze:
/* Add any custom values between this line and the "stop editing" line. */ /* That's all, stop editing! Happy publishing. */ /** Absolute path to the WordPress directory. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', __DIR__ . '/' ); } /** Sets up WordPress vars and included files. */ require_once ABSPATH . 'wp-settings.php';
Jest tu kilka instrukcji, ale linia „zatrzymaj edycję” jest ważna. Po tym wierszu następuje kontynuacja sekwencji inicjalizacji WordPressa. Dodanie nowego kodu w niewłaściwym miejscu prawdopodobnie spowoduje tylko, że nowy kod nie przyniesie żadnego efektu. Ale aby być bezpiecznym, polecam postępować zgodnie z tymi instrukcjami. Są tam nie bez powodu.
Sprawdzanie/linting pliku wp-config.php
Jeśli pracujesz w środowisku produkcyjnym, naprawdę nie chcesz umieszczać żadnych błędów w pliku wp-config.php
. Błędy w tym miejscu mogą zepsuć Twoją witrynę i możesz nie wyświetlić przydatnego komunikatu o błędzie, gdy tak się stanie.
Możesz uruchomić php
w wierszu poleceń z opcją -l
(„lint”), aby sprawdzić plik wp-config.php
pod kątem krytycznych błędów składni PHP.
$ php -l wp-config.php Błąd analizy: błąd składni, nieoczekiwany token „require_once” w wp-config.php w wierszu 9 Błędy parsowania wp-config.php
Możesz nawet napisać skrypt powłoki do…
- Skopiuj
wp-config.php
do pliku tymczasowego, - Edytuj plik tymczasowy,
- Lintuj plik tymczasowy i
- Skopiuj go z powrotem tylko wtedy, gdy nie zawiera błędów składniowych.
Jeśli jesteś zadowolony z wiersza poleceń, bezpieczniej jest używać poleceń WP-CLI, takich jak wp config set <name> <value>
do bezpiecznego ustawiania wartości, zamiast robić to ręcznie.
Możesz również wyświetlić swoje wartości konfiguracyjne za pomocą WP-CLI (jest to przykład z usuniętymi niektórymi wpisami - masz pomysł!):
Lista konfiguracji $wp +---------------------+------------------------------------------ ---------+----------+ | nazwa | wartość | wpisz | +---------------------+------------------------------------------ ---------+----------+ | katalog_główny | /Użytkownicy/kowale/witryny/snpp | zmienna | | katalog_webroot | /Users/smithers/sites/snpp/public | zmienna | | prefiks_tabeli | wp_ | zmienna | | WP_HOME | https://snpp.test | stała | | WP_SITEURL | https://snpp.test/ | stała | | DB_NAME | snpp | stała | | DB_USER | korzeń | stała | | DB_HASŁO | Montgomery | stała | | DB_HOST | 127.0.0.1 | stała | | DB_CHARSET | utf8mb4 | stała | | DB_COLLATE | | stała | | DB_PREFIX | wp_ | stała | | WP_DEBUG | 1 | stała | | WP_DEBUG_LOG | 1 | stała | | WP_DEBUG_DISPLAY | | stała | | WP_ENVIRONMENT_TYPE | rozwój | stała | | DISABLE_WP_CRON | | stała | | DISALLOW_FILE_EDIT | 1 | stała | +---------------------+------------------------------------------ ---------+----------+
Te dwie techniki mogą naprawdę oszczędzić ci trochę kłopotów i powstrzymać cię przed wpadaniem w panikę z powodu przypadkowego umieszczenia średnika w niewłaściwym miejscu w tak krytycznym pliku.
Zabezpieczanie WordPressa za pomocą wp-config.php
Bezpieczeństwo to stale gorący temat w WordPressie. Niektóre ustawienia, które możemy zmienić w pliku wp-config
, umieszczają więcej narzędzi w naszym zestawie narzędzi bezpieczeństwa.
Te części pliku wp-config
to zdecydowanie nie jedyne rzeczy, których powinieneś używać, aby osiągnąć dobre bezpieczeństwo WordPress. Upewnij się, że dokładnie rozumiesz bezpieczeństwo witryny, a także informacje zawarte w następnej sekcji.
Ochrona wp-config.php przed odwiedzającymi witrynę
Twój plik wp-config
domyślnie znajduje się w katalogu głównym Twojej witryny i po prostu zawiera krytyczne informacje, takie jak dane logowania do bazy danych i sole haseł. Nie chcesz, aby te informacje były publicznie dostępne, więc upewnij się, że plik wp-config
jest chroniony przed odwiedzającymi witrynę.
Twoja firma hostingowa często robi to za Ciebie. Możesz to sprawdzić, próbując uzyskać dostęp do pliku z przeglądarki, dodając /wp-config.php
zaraz po swojej domenie. Ten adres URL może być inny, jeśli plik został przeniesiony.
Jeśli umieściłeś plik wp-config
w katalogu powyżej katalogu głównego witryny, nie powinieneś go widzieć. W większości innych przypadków po prostu otrzymasz komunikat o błędzie PHP podczas próby odwiedzenia pliku, więc zwykle nie ma tu nic do zrobienia. Ale jeśli chcesz go odpowiednio zabezpieczyć, możesz to zrobić, modyfikując konfigurację serwera WWW (Apache lub nginx), aby zablokować do niego dostęp.
Wreszcie, jeśli przechowujesz plik swojej witryny w Git, ważne jest, aby nie przechowywać pliku wp-config
w repozytorium Git. Może to spowodować ujawnienie krytycznych informacji o Twojej witrynie, ale dodatkowo prawdopodobnie i tak chcesz mieć inną wersję tego pliku w każdym środowisku. Dlatego lepiej jest dodać go do swojego .gitignore
i ręcznie zarządzać plikami w każdym środowisku.
Obrotowe klucze/sole
Czym są klucze/sole?
Sekcja kluczy i soli to jedna z bardziej tajemniczych części wp-config
. Ten zestaw dziwnie wyglądających stałych pomaga w szyfrowaniu takich rzeczy, jak pliki cookie i nonces. Bez wchodzenia w szczegóły - tak jak WP Engine - dodają dodatkową warstwę losowości, która utrudnia odszyfrowanie, jeśli nie znasz soli i kluczy.
Po co „obracać” klucze/sole?
Po pierwsze, „obróć” to tylko wymyślne słowo oznaczające „zmianę”. Nie wiem, dlaczego używamy „obróć”. To nie tak, że kiedykolwiek wracamy do tego samego zestawu kluczy!
Prawdopodobnie powinieneś zmienić swoje klucze i sole, jeśli witryna została zhakowana, ponieważ nie możesz zagwarantować, że klucze i sole są nadal tajne. Ale i tak możesz chcieć je regularnie rotować, tak jak w przypadku haseł, aby mieć pewność, że nikt nie wie, czym one są.
Problem z obracaniem kluczy/solami
Zmiana kluczy i soli nie jest bezbolesna. Każdy, kto ma zestaw ciasteczek, straci go. Więc każdy zalogowany zostanie wyładowany, a każdy, kto ma koszyk WooCommerce, będzie go opróżniał.
Jak obracać klucze/sole?
Mam na myśli, że możesz edytować plik wp-config
i po prostu wpisać kilka nowych losowych znaków nad starymi. Ale byłoby to nudne, a ludzie nie są zbyt dobrzy w losowości.
Pozwól, że opowiem ci o kilku sposobach ustawiania nowych kluczy/soli w twoim wp-config
.
- Ręczne dodawanie kluczy z generatora: Możesz użyć generatora wordpress.org, aby uzyskać potrzebny kod. Po prostu skopiuj i wklej go do pliku
wp-config
w miejsce starych wartości. - Użyj wtyczki: wiele wtyczek bezpieczeństwa, takich jak Sucuri Security, iThemes Security i Malcare, ma tę funkcję. A Salt Shaker to dedykowana wtyczka, która zautomatyzuje ten proces zgodnie z harmonogramem.
- Użyj WP-CLI. Czy powiedzieliśmy już, jak niesamowity jest WP-CLI? Zrobiliśmy? OK. Cóż, powtarzamy to ponownie! I możesz użyć polecenia
wp config shuffle-salts
aby wykonać tę pracę w kilka sekund.
Przenoszenie i ukrywanie rzeczy
Osoby zajmujące się bezpieczeństwem powiedzą Ci, że „bezpieczeństwo przez ukrywanie” wcale nie jest zabezpieczeniem, ale niektórzy ludzie nadal lubią ukrywać swoje WordPress rzeczy, aby postawić dodatkowe bariery dla hakerów.
Plik wp-config
daje ci wiele opcji do zrobienia tego, a omówimy je w dalszych sekcjach dotyczących przenoszenia rzeczy i wyłączania edycji plików.
Wyłączanie edytorów plików
WordPress ma przydatną funkcję, która pozwala edytować pliki w motywach i wtyczkach z poziomu pulpitu administracyjnego. Edycja wp-config.php
pozwala wyłączyć te edytory plików! Niektórzy ludzie lubią je wyłączać dla spokoju ducha.
Teraz wiem, że istnieje argument dotyczący bezpieczeństwa, że jeśli ktoś ma dostęp administratora do Twojej witryny — co jest potrzebne do korzystania z tych edytorów — to może przesłać wtyczkę i robić, co mu się podoba. Włączenie tych edytorów nie zapewnia hakerom większej mocy niż dotychczas.
Jednak, chociaż ich wyłączenie może nie poprawić bezpieczeństwa, prawdziwym powodem, aby to zrobić, jest powstrzymanie osób, które są faktycznie upoważnione jako administratorzy, przed ich używaniem. Jeśli jesteś agencją, prawdopodobnie nie chcesz, aby Twoi klienci odkryli, że mogą edytować wszystkie ich pliki motywów, prawda?
Wiele hostów po prostu domyślnie wyłącza tę funkcję. Ale jeśli chcesz, aby zniknęły, wystarczy dodać:
define( 'DISALLOW_FILE_EDIT', true );
Lub jeśli naprawdę chcesz zablokować swój system plików, istnieje DISALLOW_FILE_MODS
, który omówimy w następnej sekcji.
Wyłączanie automatycznych aktualizacji
Niezależnie od tego, czy je kochasz, czy nienawidzisz, automatyczne aktualizacje WordPressa wywarły pozytywny wpływ na ekosystem WordPressa i trudno je zignorować. Ale nie każdy chce, żeby ich oprogramowanie dbało o siebie!
Tak więc wp-config
zapewnia kontrolę nad procesem automatycznych aktualizacji za pomocą prostego zestawu oczywistych stałych, które można ustawić:
# Disable all core updates: define( 'WP_AUTO_UPDATE_CORE', false ); # Enable all core updates, including minor and major: define( 'WP_AUTO_UPDATE_CORE', true ); # Enable core updates for minor releases (default): define( 'WP_AUTO_UPDATE_CORE', 'minor' );
Jeśli chcesz czegoś bardziej ekstremalnego, możesz DISALLOW_FILE_MODS
:
define( 'DISALLOW_FILE_MODS', true );
Ale to uniemożliwia WordPressowi zapisywanie na dysku wszystkiego , co dotyczy rdzenia, motywów, wtyczek lub tłumaczeń, a także wyłącza powiadomienia e-mail o drobnych aktualizacjach. Został opisany przez głównego współpracownika jako „szalony głupi w użyciu, chyba że dokładnie wiesz, co robisz”.
Nieco mniej ekstremalne jest AUTOMATIC_UPDATER_DISABLED
. Pozwala to instalować wtyczki i motywy, ale nie aktualizuje ich ani podstawowego oprogramowania. Wyłącza również aktualizacje tłumaczeń.
define( 'AUTOMATIC_UPDATER_DISABLED', true );
Na wordpress.org znajduje się szczegółowy przewodnik na ten temat, w tym kilka innych opcji, takich jak używanie filtrów dla bardziej precyzyjnej kontroli.
Na koniec zauważam, że jeśli Twoja witryna jest kontrolowana pod kątem wersji, prawdopodobnie WordPress i tak wyłączył aktualizacje. Na przykład obecność katalogu .git
w katalogu głównym witryny (lub różnych innych plików w różnych miejscach) spowoduje wyłączenie automatycznych aktualizacji bez konieczności dodawania czegokolwiek do wp-config
.
Konfiguracja HTTPS
Konfiguracja HTTPS często była trudna. Wraz z pojawieniem się darmowych, zaufanych certyfikatów bezpieczeństwa z miejsc takich jak LetsEncrypt i Cloudflare, wielu hostów skonfiguruje to za pomocą kilku kliknięć. To ustawienie należy prawdopodobnie uznać za dziedzictwo, ale być może nadal potrzebujesz go do czegoś.
Stała FORCE_SSL_ADMIN
mówi WordPressowi, aby zawsze używał SSL dla stron logowania i pulpitu WordPress. Gwarantuje to, że bezpieczne dane uwierzytelniające i pliki cookie nie mogą być wysyłane w postaci niezaszyfrowanej.
Ale, jak powiedziałem, dobra firma hostingowa i tak sprawi, że konfiguracja HTTPS w Twojej witrynie będzie prosta, więc po prostu to zrób.
Zapobieganie zewnętrznym żądaniom HTTP
Wreszcie w bezpieczeństwie możesz blokować zewnętrzne żądania HTTP. Oznacza to, że WordPress nie może kontaktować się z innymi miejscami w Internecie, aby wykonywać takie czynności, jak wykonywanie wywołań API lub pobieranie aktualizacji.
Zezwolenie WordPressowi na kontaktowanie się z usługami zewnętrznymi przez HTTP jest ogólnie dobrym pomysłem, ponieważ pozwala na pobieranie aktualizacji, instalowanie wtyczek i motywów, a wiele wtyczek zepsuje się, jeśli wyłączysz żądania HTTP.
Jednak rdzeń WordPressa oraz wiele wtyczek i motywów wysyła „telemetrię” lub „dane użytkowania” z powrotem do centralnych serwerów. To może być dobre – pomaga twórcom wtyczek i motywów wiedzieć, kto i w jaki sposób korzysta z ich oprogramowania. Ale jeśli masz witrynę, która zawiera szczególnie wrażliwe dane, możesz to wyłączyć. Możesz to zrobić za pomocą:
define( 'WP_HTTP_BLOCK_EXTERNAL', true );
Jeśli chcesz mieć listę dozwolonych hostów, z którymi można się skontaktować, możesz to również zrobić:
define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,*.github.com' );
Pamiętaj, że lista dostępnych hostów jest listą oddzieloną przecinkami, a subdomeny z symbolami wieloznacznymi są dozwolone. I możesz monitorować, z jakimi hostami się kontaktujesz za pomocą wtyczki Log HTTP Requests.
Przenoszenie rzeczy
Nie każda instalacja WordPressa jest taka sama. Niektóre hosty lub frameworki lubią przenosić katalogi ze względów bezpieczeństwa lub oddzielić kod i zasoby specyficzne dla witryny od rdzenia WordPress. Mój artykuł na temat używania Git i Composera do zarządzania WordPressem opisuje niektóre zalety tego podejścia.
Jakie więc opcje daje WordPress – z braku lepszego określenia – „przenoszenie rzeczy”?
Zmiana prefiksu bazy danych
WordPress domyślnie używa prefiksu nazwy tabeli bazy danych wp_
. Ten prefiks jest dodawany do wszystkich nazw tabel bazy danych i jest używany również w innych miejscach, na przykład opcja <prefix>user_roles
w tabeli opcji oraz wpisy meta użytkownika <prefix>capabilities
.
Hakerzy lub osoby atakujące mogą użyć domyślnego prefiksu w ataku, próbując wykryć lub zmodyfikować tabele bazy danych. Więc niektórzy zalecają zmianę z domyślnego.
Opcja wp_config
$table_prefix
pozwala to zrobić i prawdopodobnie powinieneś ustawić go na jakiś krótki, ale losowy ciąg, z sufiksem podkreślenia:
$table_prefix = 'b4F8az_';
To powie WordPressowi, aby używał nazw tabel, takich jak b4F8az_posts
zamiast wp_posts
.
Nie powinieneś aktualizować żadnego kodu, aby uwzględnić tę zmianę (chyba że kod jest bardzo źle napisany), ale jeśli zmieniasz to w istniejącej witrynie, będziesz musiał dokonać pewnych aktualizacji w swojej bazie danych – a nie tylko zmienić nazwę stoły!
Niektóre wtyczki bezpieczeństwa zrobią to za Ciebie i istnieje wtyczka, która również może to zrobić. Zdecydowanie zalecamy wykonanie kopii zapasowej bazy danych przed wykonaniem tej czynności i pamiętaj, że wybór innego niż domyślny prefiks tabeli najlepiej jest wykonać podczas instalacji WordPressa, a nie podczas zmiany go, gdy witryna jest w trakcie działania.
Ciekawą uwagą na ten temat jest to, że $table_prefix
jest zmienną, a nie stałą. Jest to jedyna zmienna zdefiniowana w przykładowym pliku konfiguracyjnym, który daje Ci WordPress! A jeśli nadal jesteś ciekawy: tak, polecenia wp config
WP-CLI zajmą się tym bez Twojej wiedzy!
Przenoszenie tabel użytkownika i Usermeta
Nigdy nie widziałem tego, a dowiedziałem się, że można to zrobić, pisząc ten artykuł, ale możesz też całkowicie zmienić nazwy tabel użytkowników i usermeta.
Sądzę, że pomaga to zapobiec atakowi polegającemu na wstrzykiwaniu SQL, który próbuje „SELECT * FROM wp_usermeta;”, ale cieszę się, że słyszę inne powody, aby to zrobić.
W każdym razie stałe CUSTOM_USER_TABLE
i CUSTOM_USER_META_TABLE
są tym, czego potrzebujesz:
define( 'CUSTOM_USER_TABLE', $table_prefix.'my_users' ); define( 'CUSTOM_USER_META_TABLE', $table_prefix.'my_usermeta' );
Istnieją pewne zastrzeżenia, o których warto wiedzieć przed użyciem tych stałych. Sprawdź oficjalne dokumenty przed użyciem tej funkcji. Podobnie jak w przypadku niestandardowego prefiksu tabeli, zdecydowanie najlepiej jest to zrobić podczas instalowania nowej witryny, zamiast modyfikowania jej później.
Przenieś zawartość, przesłane i katalogi wtyczek
Możliwe jest również przeniesienie całego katalogu wp-content
, katalogu uploads
oraz katalogów themes
i plugins
. Rzeczy do zapamiętania:
- W niektórych przypadkach musisz ustawić adres URL oraz katalog.
- Należy uważać, aby używać pełnych ścieżek lub ścieżek względnych.
- Żadne z tych ustawień nie powinno mieć końcowego ukośnika.
Szczegóły znajdziesz w oficjalnej dokumentacji – nie będę tego wszystkiego tutaj powtarzał.
Na koniec zwróć uwagę, że źle zakodowana wtyczka lub motyw może zepsuć się, jeśli je zmienisz. To nigdy nie powinno się zdarzyć, ale warto o tym wiedzieć.
Jeśli jesteś programistą wtyczek lub motywów, pamiętaj, że te ścieżki mogą się zmieniać. Upewnij się więc, że nie stosujesz twardych ścieżek kodu do katalogów lub adresów URL. Przydatne dla Ciebie funkcje to:
wp_upload_dir
plugins_url
plugin_dir_url
plugin_dir_path
get_stylesheet_directory
get_stylesheet_directory_uri
get_template_directory
– zauważ, że dla motywu potomnego zwraca lokalizację motywu nadrzędnego
get_template_directory_uri
W podręczniku programisty WordPressa znajduje się bardziej wyczerpująca lista takich funkcji.
Na koniec, oprócz przenoszenia plików w obrębie instalacji WordPressa, możesz również przenieść swoją lokalizację wp-admin lub zmienić lokalizację swojej witryny. W tym również może pomóc wp-config.php
.
Ustawienia dotyczące treści
WordPress to przecież system zarządzania treścią. Można więc oczekiwać niektórych stałych, których można użyć w wp-config.php
do kontrolowania opcji zawartości. Zobaczmy i zobaczmy, co możemy zrobić.
Zmień adresy URL witryny i pulpitu nawigacyjnego
To zawsze mnie myliło.
Aby ustawić adres URL swojej witryny, musisz użyć stałej WP_HOME
, a nie stałej WP_SITEURL
.
Stała WP_SITEURL
nie zmienia adresu URL Twojej witryny.
Zdezorientowany?
Oficjalny opis tego, co robi WP_SITEURL
, to „adres, pod którym znajdują się twoje podstawowe pliki WordPress”. Jest to również mylące, ponieważ jest to adres URL, a nie katalog.
Nie obwiniaj mnie za to, jestem tylko twoim przewodnikiem na cały dzień!
Ustawienie WP_HOME
i WP_SITEURL
zastępuje wpisy home
i siteurl
w tabeli bazy danych wp_options
. Więc to przynajmniej ma sens.
// NOTE: These must not have trailing slashes define( 'WP_HOME', 'https://helfish.media' ); define( 'WP_SITEURL', 'https://hellfish.media/wordpress` );
Możesz użyć tych stałych po przeniesieniu witryny pod nowy adres URL, aby uruchomić witrynę i jednocześnie poprawnie naprawić bazę danych. Możesz nawet zdecydować się na pozostawienie ich na miejscu.
Ustawienie WP_SITEURL
może być również użyte, gdy przeniosłeś swoje podstawowe pliki WordPress do innego katalogu.
Użycie ich zapobiega również uruchomieniu jednego lub dwóch zapytań do bazy danych w celu pobrania wartości z tabeli opcji, co może spowodować marginalny wzrost wydajności. Chociaż jeśli robisz buforowanie obiektów, ten zysk jest prawdopodobnie znikomy.
W oficjalnych dokumentach jest więcej szczegółów, a nawet pełny artykuł pomocy dotyczący zmiany adresu URL witryny. Ponadto ten artykuł zawiera niejasną stałą RELOCATE
dla wp-config.php
, o której nigdy nie słyszałem przed zbadaniem tego artykułu.
Na koniec przy przenoszeniu witryn pamiętaj, że nie jest to jedyna rzecz, którą musisz zmienić. Zalecane jest pełne wyszukiwanie i zastępowanie w bazie danych ciągów adresów URL.
Ustawienia postu
Istnieje kilka różnych ustawień, które możesz modyfikować, jeśli chodzi o posty. Większość z nich dotyczy albo publikowania wersji, albo funkcji automatycznego zapisywania.
Po zmianach
Domyślnym zachowaniem WordPressa jest zapisywanie wszystkich poprawek wprowadzonych do postów i stron. Zaletą tego jest łatwość powrotu do poprzednich wersji. Wadą jest to, że wszystkie te wersje zajmują miejsce w bazie danych i mogą wpływać na wydajność witryny, spowalniając zapytania do bazy danych.
Możliwe jest całkowite wyłączenie publikowania wersji, modyfikując wartość WP_POST_REVISIONS
w pliku wp-config.php
. Wartość domyślna to prawda. Aby wyłączyć wersje, możesz zamiast tego ustawić wartość false:
define( 'WP_POST_REVISIONS', false );:
Niektóre hosty, w tym WP Engine, domyślnie wyłączają wersje publikowania. Zalecam skontaktowanie się z dostawcą usług hostingowych przed wprowadzeniem jakichkolwiek zmian. Różni się to w zależności od hosta, ale jeśli korzystasz z WP Engine, nie możesz włączyć wersji za pomocą wp-config
, ponieważ zostanie on nadpisany na poziomie serwera.
Jeśli twój host kontroluje to i spróbujesz to zmienić, niekoniecznie coś zepsujesz, ale możesz marnować swój czas.
Jeśli obawiasz się , że publikowanie wersji spowalnia zapytania do bazy danych, lepszym rozwiązaniem może być ograniczenie liczby wersji przechowywanych przez WordPress. Jest to kontrolowane przez stałą WP_POST_REVISIONS
, którą możesz ustawić na maksymalną liczbę wersji, które chcesz zachować:
define( 'WP_POST_REVISIONS', 5 );
Zmiana interwału autozapisu
Możesz także zmniejszyć częstotliwość uruchamiania autozapisu. To domyślnie co 60 sekund, ale możesz to zmienić na dowolne. Jeśli masz paranoję, możesz zamiast tego ustawić to na 20 lub 30 sekund.
Należy pamiętać, jak długo trwa autozapis. Nie chcesz, aby nakładały się na siebie, powodując, że zdarzają się zbyt często, więc nie ustawiaj tej wartości na przykład na jedną sekundę. Jest mało prawdopodobne, że automatyczne zapisywanie zajmie więcej niż domyślne 60 sekund, ale możesz zwiększyć interwał, jeśli chcesz zapisywać żądania:
define( 'AUTOSAVE_INTERVAL', 120 ); // Seconds
Zawijanie
W wp-config
jest duży potencjał, który tylko czeka na odblokowanie. Mam nadzieję, że ta trasa pomogła uwypuklić tylko niektóre z możliwości. W przyszłym artykule przyjrzę się bardziej zaawansowanym możliwościom związanym z wp-config
, w tym instalacjom wielostanowiskowym i debugowaniu. Zajmę się również wydajnością, w tym sposobami dostosowania limitów pamięci, problemów z CRON i typów środowisk.
Bez wątpienia w oficjalnej dokumentacji czają się inne skarby, które czekają na odkrycie. Jakie wskazówki znalazłeś dotyczące korzystania z wp-config
? Daj znać w komentarzach.