Как работает admin-ajax.php?
У нас возникли некоторые разногласия с внешним разработчиком.
Мы хотим ограничить доступ к сайту wp-admin только для внутреннего доступа (через VPN). Это нужно для защиты от атак внешних пользователей. Мы можем перечислить администраторов сайта и не хотим, чтобы они стали жертвами фишинга.
Наш разработчик утверждает, что мы не можем этого сделать, потому что сайту необходим внешний доступ к административной странице для корректной работы, в частности к странице admin-ajax.
Что делает страница admin-ajax.php?
Она находится в административном разделе WordPress. Осуществляется ли к ней доступ неаутентифицированными конечными пользователями? Является ли небезопасной практикой делать её доступной для внешних пользователей?
admin-ajax.php является частью WordPress AJAX API, и да, он обрабатывает запросы как с бэкенда, так и с фронтенда. Не стоит беспокоиться о том, что он находится в директории wp-admin. Я тоже считаю это странным местом для него, но само по себе это не является проблемой безопасности. Как это связано с "перечислением администраторов", я не знаю.
рекомендуете ли вы сделать страницу wp admin недоступной извне? и знаете ли вы, может ли это нарушить работу ajax админки?
nick
Я не совсем уверен, что это означает, но если вам нужно, чтобы доступ к файлам в wp-admin был только с IP вашего VPN, то да, это может нарушить работу AJAX. AJAX-запросы идут из браузера пользователя, поэтому используют IP пользователя.
s_ha_dum
Для неаутентифицированных и ненадежных пользователей следует сделать два конкретных исключения в ваших VPN / Firewall / Apache .htaccess, а именно:
example.com/wp-admin/admin-post.phpexample.com/wp-admin/admin-ajax.php
Это два автоматических конечных пункта, которые активно используются как самой WordPress, так и различными плагинами.
Вот объяснение того, что делает admin-post.php:
admin-ajax.php работает очень похожим образом, и полезное объяснение можно найти здесь.
Если вы хотите ограничить доступ к бэкенду WordPress (например, к wp-admin), просто используйте правило .htaccess в директории wp-admin.
Ознакомьтесь с этой статьёй для общего обзора: Защита директории паролем с помощью .htaccess
Также изучите эту тему для вашего конкретного случая: Защита паролем /wp-admin/
Или, если вы предпочитаете сделать это по IP: http://betterwp.net/wordpress-tips/protect-wordpress-wp-admin-folder/
skim-