У кого уже ломали сайт на WordPress, знают, что хакеры, как правило, изменяют файлы .htaccess и перенаправляют весь трафик от Google или Yandex на другой URL-адрес. Обычно инфицированный php закачивают в папку wp-content / uploads. Если вы используете VPS для вашего сайта, если это возможно, отключите .htaccess в конфигурации Apache и используйте «Дополнительные директивы Apache». Местоположение этой функции можно найти в панели управления вашего хостинга.

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

  • Отключить .htaccess с помощью “AllowOverride None”, это увеличит безопасность и производительность вашего сайта.
  • Всегда делайте бэкап вашего .htaccess перед внесением в него серьезных изменений.
  • .htaccess не единственное звено в безопасности WordPress, всегда используйте последнюю версию WordPress и только проверенные плагины.
  • Перед размещением вашего сайта на какой-либо хостинг всегда обращайте на функции безопасности, которые вам предлагают.

Отключение выполнения PHP скриптов в папке Uploads

Обычно хакеры копируют зараженные файлы или скрипты в директорию wp-content/uploads. В этой папке нет смысла хранить и тем более выполнять .php файлы. Создайте файл .htaccess в папке /wp-content/uploads/ и скопируйте код. Этот код отключит выполнение PHP внутри папки.

# Kill PHP Execution
<Files *.php>
deny from all
</Files>

Защита wp-config.php

Для защиты файла wp-config.php от не авторизованных пользователей, скопируйте код и вставьте в .htaccess файл в корне сайта.

<files wp-config.php>
order allow,deny
deny from all
</files>

Защита .htaccess от не авторизованных пользователей

Для защиты файла .htaccess от несанкционированного доступа, скопируйте и вставьте код в .htaccess .

<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

Отключение просмотра каталогов в WordPress

Нет никакого смысла оставлять каталоги вашего сайта видимыми для всего мира, это позволяет хакерам видеть структуру вашего сайта, плюс поисковые системы будут это все индексировать.

Options -Indexes

Блокировка выполнения межсайтовых скриптов (XSS)

Следующий фрагмент кода защищает ваш сайт от некоторых распространенных XSS атак , а именно от инъекций и скриптов. Если вы не используете 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>

Ограничение доступа в WP Includes

Папка /wp-includes/ содержит ядро WordPress. Для ограничения доступа к папке скопируйте и вставьте код в файл .htaccess.

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

Ограничение прямого доступа к PHP файлам плагинов и тем

Как упоминалось ранее, нет причин для того, чтобы кто-либо еще имел доступ к файлам плагина или темы, отключение прямых вызовов — хорошая политика безопасности.

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

Доступ с определенных IP

Если вы администрируете сайт только с одного компьютера, имеет смысл ограничить доступ к административной части WordPress по IP. Для этого вам нужно добавить небольшой фрагмент кода в файл .htaccess в каталог wp-admin. Этот метод не рекомендуется, если у вас нет статического IP-адреса.

order deny,allow
allow from [insert your IP address]
deny from all