WordPress, одна из самых популярных систем управления контентом, часто становится мишенью для хакеров. Поэтому важно уделить должное внимание безопасности вашего сайта. Один из ключевых инструментов для защиты WordPress - это файл .htaccess, который позволяет управлять множеством аспектов веб-сервера. В этой статье мы рассмотрим различные методы усиления безопасности WordPress с помощью .htaccess.
Запрет доступа к определенным файлам
Некоторые файлы WordPress, такие как wp-config.php и .htaccess, содержат важные настройки. Защита этих файлов от несанкционированного доступа критически важна.
- Добавляем нужные правила сразу после стандартных директив WordPress.
Добавляем в .htaccess следующие строки:
# Deny access to wp-config.php, xmlrpc.php, readme.html, license.txt, htaccess|htpasswd files
<FilesMatch "^.*(wp-config\.php|xmlrpc\.php|readme.html|license.txt|\.[hH][tT][aApP].*)$">
Order deny,allow
Deny from all
</FilesMatch>
Запрет доступа к содержимому каталога wp-includes
Этот каталог содержит важные системные файлы WordPress. Чтобы защитить его, добавьте следующий код:
# Block wp-includes folder and files
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [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]
</IfModule>
Ограничение доступа к файлам в каталоге wp-content
Чтобы разрешить доступ только к файлам с определенными расширениями, используйте следующие правила:
# Disable access to all file types except the following
Order deny,allow
Deny from all
<Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar|ttf|woff|woff2|mp4|mp3)$">
Allow from all
</Files>
Запрет на выполнение PHP-файлов в каталоге wp-content/uploads
Для предотвращения выполнения потенциально вредоносных PHP-скриптов в каталоге uploads, добавьте:
# Kill PHP Execution
<Files *.php>
deny from all
</Files>
Отключение просмотра/листинга содержания каталогов
Скрытие структуры файлов вашего сайта увеличивает его безопасность. Для этого добавьте:
# Disable directory browsing
Options All -Indexes
Ограничение доступа к админ-панели WordPress
Ограничение доступа к административной панели по IP-адресу - эффективный способ защиты. Пример кода:
# Limit logins and admin by IP
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^111.111.111.111$
RewriteCond %{REMOTE_ADDR} !^112.112.112.112$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
Запрет доступа к сайту с определенных IP-адресов
Этот метод помогает блокировать известных вредоносных пользователей:
<Limit GET POST>
order allow,deny
deny from IP_ADDRESS_1, IP_ADDRESS_2
allow from all
</Limit>
Здесь указываются IP-адреса (или диапазоны адресов), для которых будет запрещён доступ к сайту. Замените IP_ADDRESS_1, IP_ADDRESS_2 на конкретные IP-адреса, которые нужно заблокировать.
Защита от Hotlink
Предотвратите использование изображений вашего сайта на других ресурсах:
# Prevent image hotlinking script.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://www.yourwebsite.com/hotlink.png [NC,R,L]
-
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]: Это условие проверяет, что запрос не пришёл с вашего собственного сайта (или его вариаций с www и без). [NC] означает "без учёта регистра" (No Case).
-
RewriteRule \.(jpg|jpeg|png|gif)$ http://www.yourwebsite.com/hotlink.png [NC,R,L]: Это правило перенаправляет все запросы к изображениям с расширениями jpg, jpeg, png, gif, которые не соответствуют предыдущим условиям, на определённое изображение (hotlink.png) на вашем сайте.
Отключение вывода ошибок
Скрывая информацию об ошибках, вы уменьшаете риск использования этих данных хакерами:
php_flag display_errors Off
Оптимизация производительности
Кеширование браузера позволяет повторно использовать загруженные ресурсы (как изображения, CSS и JavaScript файлы), что существенно снижает время загрузки для повторных посетителей вашего сайта. Для активации кеша браузера, добавьте следующие строки в ваш файл .htaccess
:
# Setup browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType application/javascript "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresDefault "access 1 month"
</IfModule>
Включение сжатия
Сжатие файлов уменьшает их размер, что в свою очередь ускоряет загрузку страниц. Это особенно важно для пользователей с медленными интернет-соединениями. Для активации сжатия, внесите следующие изменения в .htaccess
:
# Setup compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
Включение страницы обслуживания и пользовательских страниц ошибок
Страница обслуживания — это временная страница, которая отображается посетителям вашего сайта во время проведения технических работ или обновлений. Она информирует посетителей о том, что сайт временно недоступен, и помогает избежать путаницы или недопонимания со стороны пользователей. Для включения страницы обслуживания, добавьте в ваш .htaccess следующий код:
# Redirect all traffic to maintenance.html file
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L]
Этот код перенаправляет всех посетителей на maintenance.html
, за исключением запросов, исходящих с IP-адреса 123.123.123.123
(здесь вы можете указать свой IP-адрес, чтобы иметь доступ к полной версии сайта во время обслуживания).
- Эти методы улучшают взаимодействие пользователя с сайтом в случае возникновения ошибок или проведения технических работ.
В заключение, использование файла .htaccess для усиления безопасности WordPress является эффективным способом защиты вашего сайта от многих распространенных угроз. Однако не забывайте, что некоторые изменения могут повлиять на функциональность вашего сайта, поэтому применяйте их с осторожностью и всегда делайте резервные копии перед внесением изменений.