За последние годы не раз проскакивали новости о массовом взломе, бруте сайтов на вордпрессе через xmlrpc. Кто не знает, по умолчанию, во всех последних версиях WordPress XML-RPC включен. Большинство рекомендаций сводятся к отключению этой функции. Через добавление фильтра в functions.php:
1 |
add_filter('xmlrpc_enabled', '__return_false'); |
Я в свое время решил, что куда более оптимально запрещать доступ к xmlrpc.php через .htaccess:
1 2 |
RewriteCond %{REQUEST_URI} xmlrpc.php RewriteRule ^(.*)$ - [R=404,L] |
Так нагрузки куда меньше, чем через фильтры.
Однако такое решение лишает многих полезных фич вордпресса. В частности доступа через MetaBlog и работы с сайтом через приложение WordPress для Android ( Apple не пользуюсь ). Однако эту проблему легко решить. В .htaccess вместо предыдущих двух строк добавляем:
1 2 3 |
RewriteCond %{REQUEST_URI} xmlrpc.php RewriteCond %{HTTP_USER_AGENT} !wp-android RewriteRule ^(.*)$ - [R=404,L] |
Приложение WordPress для Android с таким юзер агентом успешно проходит и все работает. В теории, если ломать будут специально вас, сообразительный злоумышленник конечно догадается добавить подходящий юзерагент в брут запрос. Тут иллюзий быть не должно. Но от массы школьников, которые чисто массой генерят бестолковую нагрузку, защитит. Также надо понимать что .htaccess работает только под апачем ;) Но поправить для nginx не сложно.
Какой юзер агент для WordPress для iOS я не знаю и протестить не на чем.
P.S.: Кстати для тестов очень полезный плагин для FireFox HttpRequester. Во вкладке Headers ставим нужный User-Agent и тестим. Также для тестов в .htaccess может пригодиться
1 |
Header set X-rpcua "%{HTTP_USER_AGENT}e" |
HttpRequester хедеры в ответе отлично видит и дебажить легко ( это из разряда, чтобы самому не забыть ).