Если вы хотите существенно повысить уровень безопасности вашего сайта на WordPress, то вам не избежать конфигурации файла .htaccess. Это позволит не только уберечься от целого ряда хакерских атак, но и организовать перенаправления, а также решить задачи связанные с кэшем.
.htaccess — это конфигурационный файл, используемый веб-сервером Apache. Огромное число сайтов работают на Apache, гораздо меньшая часть на Nginx. В этой статье мы собрали несколько полезных сниппетов для файла .htaccess.
Создание файла .htaccess для WP
Ниже представлен код файла .htaccess обычной сборки WordPress. Подробное описание можно найти на странице Кодекса WordPress. Для режима мультисайта содержимое файла .htaccess будет другим.
02 |
<IfModule mod_rewrite.c> |
05 |
RewriteRule ^index\.php$ - [L] |
06 |
RewriteCond %{REQUEST_FILENAME} !-f |
07 |
RewriteCond %{REQUEST_FILENAME} !-d |
08 |
RewriteRule . /index.php [L] |
1. Запрет доступа ко всем файлам .htaccess
Код представленный ниже, позволит запретить обращение к файлам .htaccess из браузера. Таким образом конфигурация вашего сервера будет скрыта от посторонних глаз.
1 |
# Denies access to all .htaccess files |
2 |
<Files ~ "^.*\.([Hh][Tt][Aa])" > |
2. Защита конфигурации WP
В файле wp-config.php
содержится вся информация о конфигурации WP, включая логин и пароль от базы данных. Вы можете скрыть эти файлы от всех посторонних.
Уберите знак комментария со строки # Allow from xx.xx.xx.xxx
и вставьте IP адрес вместо xx.xx.xx.xxx
.
4 |
# Allow from xx.xx.xx.xxx |
5 |
# Allow from yy.yy.yy.yyy |
3. Защита от XML-RPC DDoS атак
По умолчанию WordPress поддерживает расширение XML-RPC, которое позволяет организовать дистанционную публикацию статей. Отличная возможность, однако хакеры могут воспользоваться ею для организации DDoS атак.
Если вы не пользуетесь данной функцией, то лучше отключите её. Уберите знак комментария # Allow from xx.xx.xx.xxx
и пропишите IP адрес админа.
1 |
# Protects XML-RPC, prevents DDoS attack |
2 |
<FilesMatch "^(xmlrpc\.php)" > |
4 |
# Allow from xx.xx.xx.xxx |
5 |
# Allow from yy.yy.yy.yyy |
4. Защита раздела администрирования
Также было бы неплохо закрыть админку от общего доступа. Только не забудьте оставить хоть один вызов “Allow” и прописать туда свой IP.
01 |
# Protects admin area by IP |
02 |
AuthUserFile /dev/ null |
03 |
AuthGroupFile /dev/ null |
04 |
AuthName "WordPress Admin Access Control" |
09 |
Allow from xx.xx.xx.xxx |
10 |
Allow from yy.yy.yy.yyy |
5. Скрываем каталоги файлов
В большинстве случаев сайты на WordPress поддерживают отображение списка файлов ваших каталогов. Сказать, что это “дыра” в безопасности — значит ничего не сказать.
Вот как это выглядит:

Исправляется данная ситуация одной командой. Теперь все кто захотят пошариться по файлам получат ошибку 403.
1 |
# Prevents directory listing |
6. Защита от перебора
Если у вас в WP включены человеко-понятные URL, то вычислить логин автора не составит большого труда. Полного перебора будет вполне достаточно.
Для того чтобы это исправить внесите следующий код в файл .htaccess.
1 |
# Prevents username enumeration |
2 |
RewriteCond %{QUERY_STRING} author=d |
3 |
RewriteRule ^ /? [L,R=301] |
7. Блокировка спамеров и ботов
Если вы хотите запретить кому-то заходить на ваш сайт, то можете внести не желаемый IP адрес в файл .htaccess.
1 |
# Blocks spammers and bots |
8. Предотвращение хотлинков
Ещё одна мера, которая позволит защититься от хотлинков.
1 |
# Prevents image hotlinking |
3 |
RewriteCond %{HTTP_REFERER} !^$ |
4 |
RewriteCond %{HTTP_REFERER} !^http(s)?: |
5 |
RewriteCond %{HTTP_REFERER} !^http(s)?: |
6 |
RewriteRule \.(jpe?g?|png|gif|ico|pdf|flv|swf|gz)$ - [NC,F,L] |
9. Запрет прямого доступа к файлам тем и плагинов
Прямые запросы к файлам, папкам плагинов и тем, может обернуться большими неприятностями. Следующий код это исправит.
1 |
# Restricts access to PHP files from plugin and theme directories |
2 |
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php |
3 |
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/ |
4 |
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L] |
5 |
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php |
6 |
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/ |
7 |
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L] |
10. Перенаправления
Вы можете с лёгкостью организовать перенаправление с одного URL на другой через записи в .htaccess.
2 |
Redirect 301 /oldurl1/ http: |
3 |
Redirect 301 /oldurl2/ http: |
11. Страница “профилактики”
Во время каких-то профилактических работ на сайте неплохо организовать перенаправление пользователей на специальную страницу (к примеру maintenance.html
).
1 |
# Redirects to maintenance page |
2 |
<IfModule mod_rewrite.c> |
4 |
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000 |
5 |
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] |
6 |
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] |
7 |
RewriteRule .* /maintenance.html [R=503,L] |
12. Запрет доступа к движку WP
В каталоге /wp-includes/
хранится весь базовый код движка WordPress. Для общей безопасности лучше закрыть доступ к этой папке.
01 |
# Blocks all wp-includes folders and files |
02 |
<IfModule mod_rewrite.c> |
05 |
RewriteRule ^wp-admin/includes/ - [F,L] |
06 |
RewriteRule !^wp-includes/ - [S=3] |
07 |
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] |
08 |
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] |
09 |
RewriteRule ^wp-includes/theme-compat/ - [F,L] |
13. Защита от XSS
Защитить сайт на WP от XSS атак можно следующим образом:
1 |
# Blocks some XSS attacks |
2 |
<IfModule mod_rewrite.c> |
3 |
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR] |
4 |
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] |
5 |
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) |
6 |
RewriteRule .* index.php [F,L] |
14. Активация кэша браузера
Следующий сниппет заставит пользовательский браузер сохранить загруженные изображения в кэш. При последующих запросах картинки будут браться из этого резервного хранилища.
01 |
# Enables browser caching |
02 |
<IfModule mod_expires.c> |
04 |
ExpiresByType image/jpg "access 1 year" |
05 |
ExpiresByType image/jpeg "access 1 year" |
06 |
ExpiresByType image/gif "access 1 year" |
07 |
ExpiresByType image/png "access 1 year" |
08 |
ExpiresByType text/css "access 1 month" |
09 |
ExpiresByType application/pdf "access 1 month" |
10 |
ExpiresByType text/x-javascript "access 1 month" |
11 |
ExpiresByType application/x-shockwave-flash "access 1 month" |
12 |
ExpiresByType image/x-icon "access 1 year" |
13 |
ExpiresDefault "access 2 days" |
15. Настройка страницы ошибки
В файле .htaccess можно указать путь к файлам, которые отобразятся пользователю при возникновении ошибок (к примеру custom-403.html
, custom-404.html
).
Данный приём актуален для HTTP ошибок со статусом (4XX и 5XX).
1 |
# Sets up custom error pages |
2 |
ErrorDocument 403 /custom-403.html |
3 |
ErrorDocument 404 /custom-404.html |
Данный урок подготовлен для вас командой сайта
Последние откомментированные темы:
megr***@m*****.ru , 18.12.2011