15 полезных .htaccess сниппета для сайта на WordPress

Если вы хотите существенно повысить уровень безопасности вашего сайта на WordPress, то вам не избежать конфигурации файла .htaccess. Это позволит не только уберечься от целого ряда хакерских атак, но и организовать перенаправления, а также решить задачи связанные с кэшем.

.htaccess — это конфигурационный файл, используемый веб-сервером Apache. Огромное число сайтов работают на Apache, гораздо меньшая часть на Nginx. В этой статье мы собрали несколько полезных сниппетов для файла .htaccess.

Создание файла .htaccess для WP

Ниже представлен код файла .htaccess обычной сборки WordPress. Подробное описание можно найти на странице Кодекса WordPress. Для режима мультисайта содержимое файла .htaccess будет другим.

# BEGIN 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>
# END WordPress

1. Запрет доступа ко всем файлам .htaccess

Код представленный ниже, позволит запретить обращение к файлам .htaccess из браузера. Таким образом конфигурация вашего сервера будет скрыта от посторонних глаз.

# Denies access to all .htaccess files
<Files ~ "^.*\.([Hh][Tt][Aa])">
Order Allow,Deny
Deny from all
Satisfy all
</Files>

2. Защита конфигурации WP

В файле wp-config.php содержится вся информация о конфигурации WP, включая логин и пароль от базы данных. Вы можете скрыть эти файлы от всех посторонних.

Уберите знак комментария со строки # Allow from xx.xx.xx.xxx и вставьте IP адрес вместо xx.xx.xx.xxx.

# Protects wp-config
<Files wp-config.php>
Order Allow,Deny
# Allow from xx.xx.xx.xxx
# Allow from yy.yy.yy.yyy
Deny from all
</Files>

3. Защита от XML-RPC DDoS атак

По умолчанию WordPress поддерживает расширение XML-RPC, которое позволяет организовать дистанционную публикацию статей. Отличная возможность, однако хакеры могут воспользоваться ею для организации DDoS атак.

Если вы не пользуетесь данной функцией, то лучше отключите её. Уберите знак комментария # Allow from xx.xx.xx.xxx и пропишите IP адрес админа.

# Protects XML-RPC, prevents DDoS attack
<FilesMatch "^(xmlrpc\.php)">
Order Deny,Allow
# Allow from xx.xx.xx.xxx
# Allow from yy.yy.yy.yyy
Deny from all
</FilesMatch>

4. Защита раздела администрирования

Также было бы неплохо закрыть админку от общего доступа. Только не забудьте оставить хоть один вызов “Allow” и прописать туда свой IP.

# Protects admin area by IP
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
Order Deny,Allow
Deny from all
Allow from xx.xx.xx.xxx
Allow from yy.yy.yy.yyy
</LIMIT>

5. Скрываем каталоги файлов

В большинстве случаев сайты на WordPress поддерживают отображение списка файлов ваших каталогов. Сказать, что это “дыра” в безопасности — значит ничего не сказать.

Вот как это выглядит:

Исправляется данная ситуация одной командой. Теперь все кто захотят пошариться по файлам получат ошибку 403.

# Prevents directory listing
Options -Indexes

6. Защита от перебора

Если у вас в WP включены человеко-понятные URL, то вычислить логин автора не составит большого труда. Полного перебора будет вполне достаточно.

Для того чтобы это исправить внесите следующий код в файл .htaccess.

# Prevents username  enumeration
RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301]

7. Блокировка спамеров и ботов

Если вы хотите запретить кому-то заходить на ваш сайт, то можете внести не желаемый IP адрес в файл .htaccess.

# Blocks spammers and bots
<Limit GET POST>
Order Allow,Deny
Deny from xx.xx.xx.xxx
Deny from yy.yy.yy.yyy
</Limit>
Allow from all

8. Предотвращение хотлинков

Ещё одна мера, которая позволит защититься от хотлинков.

# Prevents image hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite2.com [NC]
RewriteRule \.(jpe?g?|png|gif|ico|pdf|flv|swf|gz)$ - [NC,F,L]

9. Запрет прямого доступа к файлам тем и плагинов

Прямые запросы к файлам, папкам плагинов и тем, может обернуться большими неприятностями. Следующий код это исправит.

# Restricts access to PHP files from plugin and theme directories
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

10. Перенаправления

Вы можете с лёгкостью организовать перенаправление с одного URL на другой через записи в .htaccess.

# Permanent redirects
Redirect 301 /oldurl1/ http://yoursite.com/newurl1
Redirect 301 /oldurl2/ http://yoursite.com/newurl2

11. Страница “профилактики”

Во время каких-то профилактических работ на сайте неплохо организовать перенаправление пользователей на специальную страницу (к примеру maintenance.html).

# Redirects to maintenance page
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.html [R=503,L]
</IfModule>

12. Запрет доступа к движку WP

В каталоге /wp-includes/ хранится весь базовый код движка WordPress. Для общей безопасности лучше закрыть доступ к этой папке.

# Blocks all wp-includes folders 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>

13. Защита от XSS

Защитить сайт на WP от XSS атак можно следующим образом:

# Blocks some XSS attacks
<IfModule mod_rewrite.c>
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>

14. Активация кэша браузера

Следующий сниппет заставит пользовательский браузер сохранить загруженные изображения в кэш. При последующих запросах картинки будут браться из этого резервного хранилища.

# Enables 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 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>

15. Настройка страницы ошибки

В файле .htaccess можно указать путь к файлам, которые отобразятся пользователю при возникновении ошибок (к примеру custom-403.html, custom-404.html).

Данный приём актуален для HTTP ошибок со статусом (4XX и 5XX).

# Sets up custom error pages
ErrorDocument 403 /custom-403.html
ErrorDocument 404 /custom-404.html

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://www.hongkiat.com/blog/useful-htaccess-snippets-for-wordpress/
Перевел: Станислав Протасевич
Урок создан: 3 Мая 2017
Просмотров: 2591
Правила перепечатки


5 последних уроков рубрики "Для сайта"

^ Наверх ^