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.





