Zabezpieczenie WordPressa za pomocą .htaccess

Zobacz, jak w prosty sposób wzmocnić bezpieczeństwo WordPressa za pomocą pliku .htaccess. Wpis pokazuje gotowe reguły blokujące podejrzane zapytania, niebezpieczne metody HTTP oraz popularne próby ataków, takie jak SQL injection, XSS czy command injection.

Co znajdziesz w tym wpisie:

Bezpieczeństwo WordPressa warto wzmacniać na kilku poziomach, nie tylko za pomocą wtyczek. Jednym z prostych i skutecznych sposobów ograniczenia ryzyka ataków jest odpowiednia konfiguracja pliku .htaccess. Dzięki dodatkowym regułom można blokować podejrzane zapytania, ograniczać dostęp do wrażliwych plików oraz utrudnić wykorzystanie popularnych podatności, takich jak SQL injection, XSS czy próby wykonania niebezpiecznych komend.

W tym artykule pokazuje praktyczny zestaw reguł .htaccess, które mogą pomóc zwiększyć ochronę strony opartej na WordPressie. To rozwiązanie nie zastępuje regularnych aktualizacji, kopii zapasowych ani dobrych praktyk administracyjnych, ale może być ważnym elementem dodatkowej warstwy zabezpieczeń.

1. Instalacja

Aby wdrożyć plik.htaccess, należy go utworzyć w katalogu głównym Twojej strony (public_html). Jeśli posiadasz już plik .htaccess, dodaj do niego poniższe zabezpieczenia.

# Zabezpieczenia przed wstrzykiwaniem danych
<IfModule mod_rewrite.c>
    # Włączenie mechanizmu rewrite
    RewriteEngine On

    # Blokada niebezpiecznych metod HTTP
    RewriteCond %{REQUEST_METHOD} ^(PUT|DELETE|PATCH|TRACE|CONNECT|TRACK)$ [NC]
    RewriteRule .* - [F,L]

    # Ochrona przed SQL injection
    # Sprawdzenie czy zapytanie zawiera niebezpieczne znaki lub wzorce
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_]//?)+ [NC,OR]
    RewriteCond %{QUERY_STRING} \.php/ [OR]
    RewriteCond %{QUERY_STRING} \.\. [OR]
    RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} SELECT.*FROM [OR]
    RewriteCond %{QUERY_STRING} INSERT.*INTO [OR]
    RewriteCond %{QUERY_STRING} DELETE.*FROM [OR]
    RewriteCond %{QUERY_STRING} UPDATE.*SET [OR]
    RewriteCond %{QUERY_STRING} UNION.*SELECT [OR]
    RewriteCond %{QUERY_STRING} base64_encode.*\( [OR]
    RewriteCond %{QUERY_STRING} eval\( [OR]
    RewriteCond %{QUERY_STRING} exec\( [OR]
    RewriteCond %{QUERY_STRING} shell_exec\( [OR]
    RewriteCond %{QUERY_STRING} passthru\( [OR]
    RewriteCond %{QUERY_STRING} system\( [OR]
    RewriteCond %{QUERY_STRING} proc_open\( [OR]
    RewriteCond %{QUERY_STRING} popen\( [OR]
    RewriteCond %{QUERY_STRING} curl_exec\( [OR]
    RewriteCond %{QUERY_STRING} curl_multi_exec\( [OR]
    RewriteCond %{QUERY_STRING} parse_ini_file\( [OR]
    RewriteCond %{QUERY_STRING} show_source\( [OR]
    RewriteCond %{QUERY_STRING} phpinfo\( [OR]
    RewriteCond %{QUERY_STRING} \.\./ [OR]
    RewriteCond %{QUERY_STRING} mosConfig [OR]
    RewriteCond %{QUERY_STRING} /environ [OR]
    RewriteCond %{QUERY_STRING} ftp:// [OR]
    RewriteCond %{QUERY_STRING} https:// [OR]
    RewriteCond %{QUERY_STRING} \|\| [OR]
    RewriteCond %{QUERY_STRING} ; [OR]
    RewriteCond %{QUERY_STRING} (concat|char|union|select|insert|drop|delete|update|create|alter|truncate|exec|script) [NC]
    # Zablokowanie zapytań które pasują do powyższych warunków
    RewriteRule .* - [F,L]
</IfModule>

Wyjaśnienie działania

Ten kod .htaccess dodaje warstwę bezpieczeństwa do Twojego WordPressa, blokując potencjalne ataki takie jak:

  • SQL injection - próby wstrzykiwania kodu SQL do zapytań bazy danych
  • XSS (Cross-Site Scripting) - próby wstrzykiwania skryptów JavaScript
  • Brute force attacks - próby ataków siłowych na logowanie
  • File inclusion attacks - próby wstrzykiwania plików
  • Command injection - próby wykonania poleceń systemowych

Każda z tych reguł sprawdza różne wzorce w adresie URL i jeśli jakakolwiek z nich zostanie spełniona, serwer zwraca błąd 403 (Forbidden), co oznacza, że dostęp do zasobu jest zabroniony.

To już koniec tego wpisu - ale mam dla Ciebie jeszcze coś

Mam tu dla Ciebie wybrane najważniejsze wpisy z kategorii "Baza wiedzy". Dzięki przejrzystemu podziałowi szybko znajdziesz to, czego szukasz, więc jeśli:

... jesteś tuż przed wdrożeniem albo ważną decyzją - rzuc okiem na to:

... albo może szukasz kogoś, kto to dla Ciebie to zrobi?

Jeśli nie masz czasu lub możliwości, żeby to wdrożyć samodzielnie - mogę Ci pomóc. Opisz krótko sytuację w formularzu, a dostaniesz konkretną propozycję wdrożenia i realną wycenę - bez ogólników i "widełek w ciemno". Formularz znajdziesz tutaj

Rafał Skonieczka

Rafał Skonieczka

Od ponad 20 lat działam na styku zarządzania, marketingu, sprzedaży i technologii. Mam za sobą ponad tysiąc projektów i wdrożeń, od małych firm i e-commerce po duże organizacje, w tym globalne korporacje. Pełniłem różne role, od specjalisty po członka zarządu, dlatego potrafię patrzeć na biznes jednocześnie z perspektywy operacji i strategii.
W praktyce najbardziej cenię moment, gdy dane, technologia i decyzja spotykają się w jednym punkcie, a efektem jest mierzalny wynik.
Doświadczenie projektowe podpowiada mi "jak" to zrobić, a wiedza akademicka porządkuje "dlaczego" to działa.
Na blogu dzielę się praktycznymi wnioskami z projektów, modelami i rozwiązaniami, które da się wdrożyć.
Chcę, żeby po lekturze zostawało coś konkretnego: pomysł, checklista albo decyzja, którą łatwiej podjąć.

Po godzinach resetuję głowę w górach i na korcie badmintonowym.

🖖 Niech konwersja będzie z Tobą!