Настройки .htaccess WordPress: как улучшить безопасность и производительность сайта
Файл .htaccess — это файл конфигурации веб-сервера Apache, который используется для управления различными аспектами работы сайта. В WordPress файл .htaccess используется для настройки правил переадресации, кэширования и безопасности.
В этой статье мы рассмотрим основные настройки .htaccess, которые могут улучшить безопасность и производительность вашего WordPress-сайта.
Ниже приведён стандартный .htaccess файл WordPress-сайта.
# BEGIN WordPress
# Строки между `BEGIN WordPress` и `END WordPress` были созданы автоматически.
# Они могут быть изменены только фильтрами WordPress.
# Все изменения между этими отметками будут перезаписаны.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
1. Отключение просмотра директорий в WordPress
По умолчанию WordPress позволяет пользователям просматривать содержимое директорий на вашем сайте. Это может быть полезно для разработчиков, но также может представлять собой угрозу безопасности.
Чтобы отключить просмотр директорий, добавьте следующую строку в файл .htaccess:
Options -Indexes
Эта строка отключает возможность просмотра содержимого директорий.
2. Запрет доступа ко всем файлам .htaccess
Файлы .htaccess содержат важные настройки для вашего веб-сайта. Если злоумышленник сможет получить доступ к файлу .htaccess, он может изменить его настройки и получить контроль над вашим сайтом.
Чтобы запретить доступ ко всем файлам .htaccess, добавьте следующую строку в файл .htaccess:
<Files ~ "^.*\.([Hh][Tt][Aa])">
Order Allow,Deny
Deny from all
Satisfy all
</Files>
Эта строка запрещает доступ ко всем файлам, имена которых заканчиваются на «.htaccess».
3. Защита конфигурации WP
Файл wp-config.php содержит важные настройки для вашего WordPress-сайта. Если злоумышленник сможет получить доступ к этому файлу, он может изменить настройки вашего сайта и получить контроль над ним.
Чтобы защитить файл wp-config.php, добавьте следующую строку в файл .htaccess:
<Files wp-config.php>
Order Allow,Deny
Deny from all
</Files>
Эта строка запрещает доступ к файлу wp-config.php всем пользователям, кроме администратора.
4. Защита от XML-RPC DDoS атак
XML-RPC — это протокол, который позволяет взаимодействовать с WordPress из внешних приложений. Этот протокол может быть использован для проведения DDoS-атак на ваш сайт.
Чтобы защитить свой сайт от XML-RPC DDoS атак, добавьте следующую строку в файл .htaccess:
<FilesMatch "^(xmlrpc\.php)">
Order Deny,Allow
Deny from all
</FilesMatch>
Эта строка запрещает доступ к файлу xmlrpc.php всем пользователям, кроме тех, которые были явно разрешены.
5. Предотвращение перебора
Перебор — это метод взлома, при котором злоумышленник пытается угадать имя пользователя или пароль.
Чтобы предотвратить перебор, добавьте следующую строку в файл .htaccess:
RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301]
Эта строка перенаправляет пользователей на главную страницу, если в строке запроса присутствует параметр «author=d». Это может затруднить злоумышленникам перебор имен пользователей.
6. Предотвращение хотлинков
Хотлинки — это ссылки на изображения, которые загружаются напрямую с вашего сервера. Хотлинки могут привести к снижению производительности вашего сайта.
Чтобы предотвратить хотлинки, добавьте следующую строку в файл .htaccess:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?blog.nixnet.uz [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?nixnet.uz [NC]
RewriteRule \.(jpe?g?|png|gif|ico|pdf|flv|swf|gz)$ - [NC,F,L]
Эта строка запрещает доступ к изображениям, если в HTTP-заголовке «Referer» не указан ваш сайт или сайт, которому вы доверяете.
7. Запрет доступа к движку WP
Чтобы предотвратить доступ к движку WordPress, добавьте следующие строки в файл .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Запрет доступа к каталогу wp-admin/includes
RewriteRule ^wp-admin/includes/ - [F,L]
# Запрет доступа к остальным файлам и каталогам wp-includes
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-admin/includes
- Все файлы и каталоги, начинающиеся с «wp-includes/»
- Файлы с расширением «.php», расположенные в каталоге wp-includes
- Файлы с расширением «.php», расположенные в каталоге wp-includes/js/tinymce/langs
- Файлы с расширением «.php», расположенные в каталоге wp-includes/theme-compat
Эта настройка может повлиять на работу некоторых плагинов, поэтому перед ее применением рекомендуется проверить работоспособность сайта.
8. Защита от XSS
Чтобы защитить свой сайт от XSS-атак, добавьте следующие строки в файл .htaccess:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /
Запрет доступа к запросам с определенными параметрами
RewriteCond %{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] </IfModule>
Эти строки запрещают доступ к запросам с параметрами:
- «|%3E» (символы «||»)
- «GLOBALS» (глобальные переменные)
- «_REQUEST» (переменные запроса)
Все остальные запросы перенаправляются на главную страницу.
Эта настройка может повлиять на работу некоторых плагинов, поэтому перед ее применением рекомендуется проверить работоспособность сайта.
9. Активация кэша браузера
Чтобы активировать кэш браузера для изображений, добавьте следующие строки в файл .htaccess:
<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 text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
Эти строки задают срок действия кэша для следующих типов файлов:
- Изображения: 1 год
- CSS: 1 месяц
- PDF: 1 месяц
- JavaScript: 1 месяц
- Флэш: 1 месяц
- Иконки: 1 год
- Остальные файлы: 2 дня
Эта настройка может привести к снижению нагрузки на сервер и улучшению производительности сайта.
10. Настройка страниц ошибок
Чтобы настроить страницы ошибок 403 и 404, добавьте следующие строки в файл .htaccess:
# Настройка страницы ошибки 403
ErrorDocument 403 /custom-403.html
# Настройка страницы ошибки 404
Дополнительные советы
Вот несколько дополнительных советов, которые помогут вам повысить безопасность вашего WordPress-сайта:
- Используйте надежный веб-хостинг, который предлагает функции безопасности, такие как фильтрация трафика и мониторинг.
- Будьте осторожны с тем, какие плагины и темы вы устанавливаете. Устанавливайте только плагины и темы от надежных разработчиков.
- Держите в курсе последних новостей о безопасности WordPress.
Проверка работы сайта после каждой манипуляции
После выполнения каждой манипуляции по повышению безопасности важно проверить работу сайта. Это можно сделать, открыв его в режиме инкогнито или другом браузере, очистив предварительно кеш.
Установка прав на файлы
После того как вы убедились, что сайт функционирует без сбоев, необходимо установить права на файлы. Для файлов .htaccess и wp-config.php рекомендуется установить права 0444. Это позволит защитить их от несанкционированного изменения.
Следуя этим советам, вы сможете повысить безопасность своего WordPress-сайта и защитить его от взлома.
