15 Przydatne fragmenty .htaccess dla Twojej strony WordPress
Mający dobrze skonfigurowany plik .htaccess jest kluczowe, jeśli chcesz zwiększyć bezpieczeństwo i zmniejszyć luki na Twojej stronie WordPress. Zwykle głównym celem tworzenia niestandardowy plik .htaccess ma zapobiec hackowaniu witryny, ale jest także doskonałym sposobem na obsługę przekierowań i zarządzanie zadaniami związanymi z pamięcią podręczną.
.htaccess to a plik konfiguracyjny używany na serwerach WWW Apache. Większość witryn WordPress uruchomić na serwerze Apache, chociaż mała część jest zasilany przez Nginx. W tym artykule możesz znaleźć zbiór fragmentów kodu .htaccess, większość z nich można wykorzystać do zabezpieczenia witryny, podczas gdy reszta implementuje inne przydatne funkcje.
Nie zapomnij o wykonać kopię zapasową pliku .htaccess zanim go edytujesz, abyś zawsze mógł powróć do poprzedniej wersji jeśli coś pójdzie nie tak.
A jeśli jesteś kimś, kto raczej nie dotyka plików konfiguracyjnych, polecam Ci BulletProof Security plugin, który jest najbardziej niezawodny (i prawdopodobnie najstarszy) darmowa wtyczka bezpieczeństwa .htaccess w sklepie.
Utwórz domyślny WP .htaccess
.htaccess działa na a na katalog co oznacza, że każdy katalog może mieć własny plik .htaccess. Może się zdarzyć, że Twoja witryna WordPress nie ma jeszcze pliku .htaccess. Jeśli nie znajdziesz pliku .htaccess w katalogu głównym utwórz pusty plik tekstowy i nazwij go .htaccess
.
Poniżej znajdziesz domyślny .htaccess WordPress używa. Zawsze, gdy potrzebujesz tego kodu, możesz szybko go znaleźć w Codexie WordPress. Zauważ, że istnieje inny .htaccess dla WP Multisite.
# BEGIN WordPressRewriteEngine On RewriteBase / RewriteRule ^ index php $ - [L] RewriteCond% REQUEST_FILENAME! -F RewriteCond% REQUEST_FILENAME! -D RewriteRule. /index.php [L] # END WordPress
Linie zaczynające się od #
są komentarze. Nie edytuj niczego między wierszami # BEGIN WordPress
i # END WordPress
. Dodaj swoje niestandardowe reguły .htaccess poniżej tych domyślnych reguł.
Wszystkie fragmenty kodu można znaleźć w tym artykule przejdź do głównego pliku .htaccess znalezione w katalogu głównym.
1. Odmów dostępu do wszystkich plików .htaccess
Kod poniżej odmawia dostępu do wszystkich plików .htaccess zainstalowanych w WordPressie. W ten sposób możesz uniemożliwić ludziom oglądanie twojego konfiguracje serwera WWW.
# Odrzuca dostęp do wszystkich plików .htaccessZamów Zezwól, Odmów Odmów od wszystkich Zaspokaj wszystkie
2. Chroń swoją konfigurację WP
The wp-config.php
plik zawiera wszystkie konfiguracje WP, w tym login i hasło do bazy danych. Możesz temu odmówić od wszystkich lub zezwolić administratorom na dostęp.
Jeśli wybierzesz tę drugą skomentować # Zezwól z xx.xx.xx.xxx
linia (usuń #
od początku linii) i wstaw adres IP administratora zamiast xx.xx.xx.xxx
.
# Chroni wp-configZamów zezwolenie, odmów # Zezwól z xx.xx.xx.xxx # Zezwól od yy.yy.yy.yyy Odmów od wszystkich
3. Zapobiegaj atakowi DDoS XML-RPC
WordPress obsługuje XML-RPC domyślnie, czyli interfejs, który umożliwia zdalne publikowanie możliwy. Jednak mimo że jest to świetna funkcja, jest to również jedna z największych luk w zabezpieczeniach WP, tak jak mogą to robić hakerzy wykorzystaj go do ataków DDoS.
Jeśli nie chcesz korzystać z tej funkcji, lepiej jest po prostu wyłącz to. Tak jak wcześniej, możesz dodaj wyjątki, komentując # Zezwól z xx.xx.xx.xxx
wiersz i dodawanie adresów IP swojego administratora (administratorów).
# Chroni XML-RPC, zapobiega atakowi DDoSZamów Odmów, Zezwól # Zezwól od xx.xx.xx.xxx # Zezwól od yy.yy.yy.yyy Odmów od wszystkich
4. Chroń swój obszar administracyjny
To także dobry pomysł chroń obszar administracyjny dając dostęp tylko administratorom. Tutaj nie zapomnij dodaj co najmniej jeden “Dopuszczać” wyjątek w przeciwnym razie w ogóle nie będzie można uzyskać dostępu do administratora.
# Chroni obszar administracyjny przez IP AuthUserFile / dev / null AuthGroupFile / dev / null AuthName "WordPress Admin Access Control" AuthType BasicZamów Odmów, Zezwól na odmowę ze wszystkich Zezwól od xx.xx.xx.xxx Zezwól od yy.rr.rr.rrr
5. Zapobiegaj wyświetlaniu katalogu
Większość witryn WordPress nie wyłącza wyświetlania katalogów, co oznacza, że każdy może przeglądaj ich foldery i pliki, w tym przesyłanie multimediów i pliki wtyczek. Nie trzeba dodawać, że jest to ogromna luka w zabezpieczeniach.
Poniżej możesz zobaczyć, jak a wygląda typowa lista katalogów WordPress.
Na szczęście po prostu potrzebujesz jedna linia kodu aby zablokować tę funkcję. Ten fragment kodu będzie zwróć komunikat o błędzie 403 każdemu, kto chce uzyskać dostęp do katalogów.
# Zapobiega wyświetlaniu listy katalogów -Indexes
6. Zapobiegaj wyliczaniu nazw użytkowników
Jeśli permalinki WP są włączone, jest to dość łatwe wyliczyć nazwy użytkowników używając archiwów autora. Wykryte nazwy użytkowników (w tym nazwa użytkownika administratora) mogą zostać użyte w brutalne ataki siłowe.
Wstaw poniższy kod do pliku .htaccess do zapobiegaj wyliczaniu nazwy użytkownika.
# Zapobiega wyliczaniu nazwy użytkownika RewriteCond% QUERY_STRING author = d RewriteRule ^ /? [L, R = 301]
7. Blokuj spamerów i boty
Czasami możesz chcieć ograniczyć dostęp z niektórych adresów IP. Ten fragment kodu zapewnia łatwy sposób na zablokowanie spamerów i botów, które już znasz.
# Blokuje spamerów i botyZamów Zezwól, Odmów Odmów od xx.xx.xx.xxx Odmów od yy.yy.yy.yyy Pozwól wszystkim
8. Zapobiegaj hotlinkowaniu obrazu
Chociaż nie stanowi zagrożenia bezpieczeństwa, hotlinkowanie obrazu wciąż jest irytującą rzeczą. Ludzie nie tylko wykorzystuj swoje zdjęcia bez Twojej zgody ale nawet robią to na twój koszt. Dzięki tym kilku wierszom kodu możesz chronić swoją witrynę przed hotlinkowaniem obrazów.
# Zapobiega hotlinkowaniu obrazów RewriteEngine na RewriteCond% HTTP_REFERER! ^ $ RewriteCond% HTTP_REFERER! ^ Http (s)?: // (www)? Yourwebsite.com [NC] RewriteCond% HTTP_REFERER! ^ Http ( s)?: // (www.)? yourwebsite2.com [NC] RewriteRule (jpe? g? | png | gif | ico | pdf | flv | swf | gz) $ - [NC, F, L]
9. Ogranicz bezpośredni dostęp do plików PHP wtyczek i motywów
To może być niebezpieczne, jeśli ktoś bezpośrednio wywołuje Twoją wtyczkę i pliki motywów, czy dzieje się to przypadkowo, czy przez złośliwego napastnika. Ten fragment kodu pochodzi z firmy zajmującej się bezpieczeństwem strony internetowej Acunetix; Możesz przeczytać więcej o tej luce w swoim blogu.
# Ogranicza dostęp do plików PHP z katalogów wtyczek i motywów RewriteCond% REQUEST_URI! ^ / Wp-content / plugins / file / to / exclude php RewriteCond% REQUEST_URI! ^ / Wp-content / plugins / directory / to / exclude / RewriteRule wp-content / plugins / (. * php) $ - [R = 404, L] RewriteCond% REQUEST_URI! ^ / wp-content / themes / file / to / exclude REQUEST_URI! ^ / Wp-content / themes / directory / to / exclude / RewriteRule wp-content / themes / (. * Php) $ - [R = 404, L]
10. Skonfiguruj stałe przekierowania
Możesz łatwo obsługiwać stałe przekierowania z .htaccess. Najpierw musisz dodać stary adres URL, następnie postępuj zgodnie z nowy adres URL wskazuje na stronę, do której chcesz przekierować użytkownika.
# Permanent redirects Redirect 301 / oldurl1 / http://yoursite.com/newurl1 Redirect 301 / oldurl2 / http://yoursite.com/newurl2
11. Wyślij odwiedzających do strony konserwacji
Pisaliśmy o tej technice szczegółowo tutaj. Potrzebujesz oddzielna strona konserwacji (maintenance.html
w przykładzie), aby ta reguła .htaccess działała. Ten kod umieszcza Twoją witrynę WordPress w trybie konserwacji.
# Przekierowuje do strony konserwacjiRewriteEngine na RewriteCond% REMOTE_ADDR! ^ 123 456 789 000 RewriteCond% REQUEST_URI! /Maintenance.html$ [NC] RewriteCond% REQUEST_URI! (Jpe? G? | Png | gif ) [NC] RewriteRule. * /Maintenance.html [R = 503, L]
12. Ogranicz wszystkie możliwości dostępu do WP
The / wp-includes /
teczka zawiera podstawowe pliki WordPress które są niezbędne do działania CMS. Brak tu treści, wtyczek, motywów lub czegokolwiek innego, do czego użytkownik może chcieć uzyskać dostęp. Aby więc wzmocnić bezpieczeństwo, najlepiej jest ograniczyć dostęp do niego.
# Blokuje wszystkie foldery i pliki wp-includesRewriteEngine On RewriteBase / RewriteRule ^ wp-admin / zawiera / - [F, L] RewriteRule! ^ Wp-includes / - [S = 3] RewriteRule ^ wp-includes / [^ /] + php $ - [F, L] RewriteRule ^ wp-includes / js / tinymce / langs /.+ php - [F, L] RewriteRule ^ wp-includes / theme-compat / - [F, L]
13. Blokuj skrypty krzyżowe (XSS)
Poniższy fragment kodu pochodzi z WP Mix i chroni Twoją witrynę przed niektóre typowe ataki XSS, mianowicie zastrzyki skryptowe i próby modyfikacji zmiennych globalnych i zmiennych żądania.
# Blokuje niektóre ataki XSSRewriteCond% QUERY_STRING (|% 3E) [NC, OR] RewriteCond% QUERY_STRING GLOBALS (= | [| | [0-9A-Z] 0,2) [OR] RewriteCond% QUERY_STRING _REQUEST (= | [| | [0-9A-Z] 0,2) RewriteRule. * Index.php [F, L]
14. Włącz buforowanie przeglądarki
Jak wspomniałem wcześniej, .htaccess jest nie tylko dobry ze względów bezpieczeństwa i przekierowań, ale może również pomóc zarządzaj pamięcią podręczną. Fragment kodu poniżej pochodzi z Elegant Themes i go umożliwia buforowanie przeglądarki umożliwiając odwiedzającym zapisywać niektóre rodzaje plików, więc przy następnej wizycie nie będą musieli ich ponownie pobierać.
# Włącza buforowanie przeglądarkiExpiresActive On ExpiresByType image / jpg "dostęp 1 rok" ExpiresByType image / jpeg "dostęp 1 rok" ExpiresByType image / gif "dostęp 1 rok" ExpiresByType image / png "dostęp 1 rok" ExpiresByType text / css "dostęp 1 miesiąc" Aplikacja ExpiresByType / pdf "dostęp 1 miesiąc" ExpiresByType tekst / x-javascript "dostęp 1 miesiąc" ExpiresByType aplikacja / x-shockwave-flash "dostęp 1 miesiąc" ExpiresByType obraz / x-ikona "dostęp 1 rok" ExpiresDefault "dostęp 2 dni"
15. Ustaw niestandardowe strony błędów
Możesz użyć .htaccess, aby skonfigurować niestandardowe strony błędów w swojej witrynie WordPress. Aby ta metoda działała, musisz również utwórz niestandardowe strony błędów (custom-403.html
, custom-404.html
w tym przykładzie) i prześlij je do folderu głównego.
Możesz skonfigurować niestandardową stronę błędu dla dowolny kod statusu błędu HTTP (Kody statusu 4XX i 5XX), które chcesz.
# Konfiguruje niestandardowe strony błędów ErrorDocument 403 /custom-403.html ErrorDocument 404 /custom-404.html