Как переместить страницу входа wp-admin в другое место?

23 февр. 2011 г., 04:36:29
Просмотры: 41.6K
Голосов: 3

Я хочу физически переместить страницу входа (не виртуально). Пожалуйста, предложите способ с использованием плагина, который может изменять основной код "на лету" (даже после обновления основного кода). Это может стать дополнительным уровнем безопасности.

2
Комментарии

Вы пришли к какому-то выводу по этому вопросу? Что насчет самых популярных ответов?

brasofilo brasofilo
21 июл. 2012 г. 14:47:41

Вы также можете попробовать этот плагин: http://wordpress.org/extend/plugins/ozh-simpler-login-url/

wpmayor wpmayor
19 мар. 2011 г. 00:10:35
Все ответы на вопрос 12
0

Вы можете отключить страницу wp-login через functions.php, добавив хук к login_head:

add_action( 'login_head', 'wp_die');

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

И скопируйте существующий файл wp-login в другое место, не забудьте обновить относительный путь к wp-load.php в начале файла (а также любые другие относительные пути, которые могут там быть, включая ссылки на сам файл и действия форм).

(Очевидно, вам придётся удалить добавленный вами action для login_head, иначе вы не сможете войти и с этой страницы.)

Затем вам просто нужно добавить фильтр к login_url, который будет возвращать адрес вашей новой страницы входа. Иначе запросы к файлам wp-admin будут перенаправляться на старую, теперь отключённую страницу входа.

19 мар. 2011 г. 01:05:23
4

Это не лучшая идея с точки зрения безопасности, потому что страница wp-login или wp-admin сама по себе не представляет угрозы. Хотя можно утверждать, что если у кого-то есть ваш пароль/имя пользователя, они могут не найти, куда входить, таким образом достигается безопасность через скрытность.

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

Я бы предложил несколько лучших идей для вашей страницы входа.

Включите SSL для входа и админки (https).

Защитите свою страницу с помощью .htaccess (у вас будет двойная аутентификация).

Используйте плагин типа Limit Login Attempts, который блокирует пользователя после нескольких неудачных попыток входа.

23 февр. 2011 г. 08:20:58
Комментарии

Спасибо за ваши хорошие предложения, но я хочу переместить страницу входа в другое место.

user931 user931
23 февр. 2011 г. 08:42:35

Это абсолютно хорошая идея. Скрытие того факта, что ваш сайт работает на WordPress, отбивает у людей желание пытаться взломать основную структуру. Если бы я искал WordPress-блоги и попал на www.site.com/wp-login.php, а получил ошибку 404, я бы просто ушел, не пытаясь использовать известные уязвимости в PHP. Каждый элемент защиты делает ваш сайт немного более неуязвимым.

kristina childs kristina childs
14 дек. 2012 г. 21:55:31

И какая известная уязвимость ядра? У вас их нет или вы о них не знаете, так что вы говорите ни о чем. Настоящие специалисты по безопасности защищают приложения, а не прячут их, это для детей.

Wyck Wyck
14 дек. 2012 г. 22:22:08

Я не говорил об уязвимостях ядра. Для WordPress существует множество эксплойтов для плагинов, тем и т.д. Достаточно взглянуть на любой сайт, сообщающий об уязвимостях. Просматривая логи неудачных HTTP-запросов, я вижу, что сайты, которыми я управляю, постоянно подвергаются брутфорс-атакам и XSS-атакам, специально адаптированным под WordPress, каждый день. По вашей логике, также не стоит выносить wp-content за пределы корневой папки, перемещать wp-config.php выше корневой директории, убирать надпись "powered by wordpress" в подвале страницы, изменять префикс таблиц wp_ по умолчанию или удалять стандартную учётную запись администратора. Изменение настроек по умолчанию и есть обеспечение безопасности, и страница входа — не исключение.

kristina childs kristina childs
25 апр. 2013 г. 01:38:06
1

Ни один из этих ответов не был особенно полезным. Я сомневаюсь в мотивах автора вопроса, но вот как это сделать. Добавьте это в ваш functions.php, но не забудьте заменить "$login_page_id":

// Это перенаправит стандартную страницу входа на вашу новую страницу
add_action( 'login_redirect', 'custom_login_redirect' );
function custom_login_redirect()
{
    if ( 'wp-login.php' == $GLOBALS['pagenow'] )
    {
        // Укажите ваш $login_page_id
        wp_redirect( get_permalink($login_page_id) );
        die;
    }
}

// Это заменит URL входа, используемый WordPress
add_filter( 'login_url', 'custom_login_url', 10, 2 );
public function custom_login_url( $login_url='', $redirect='' )
{
    // Укажите ваш $login_page_id
    return get_permalink($login_page_id);
}

На вашей новой странице входа вы можете просто добавить эту функцию для отображения формы входа:

<?php wp_login_form(); ?>

http://codex.wordpress.org/Function_Reference/wp_login_form

21 февр. 2013 г. 08:44:06
Комментарии

В итоге я создал плагин, который решает эту задачу. https://wordpress.org/plugins/sewn-in-template-log-in/

Jake Jake
23 февр. 2016 г. 03:29:39
1

ОП, лучшее, что можно сделать в этом случае — это фильтрация по IP, разрешив доступ только тем сетям, которым разрешено входить в область WP-Admin (например, IP вашего офиса, разработчиков и т. д.).

## .htaccess внутри папки wp-admin
order deny,allow
deny from all
allow from xxx.xxx.xxx
allow from xxx.xxx.xxx
allow from xxx.xxx.xxx
6 мар. 2014 г. 05:42:32
Комментарии

В последних версиях Apache это можно просто заменить на require ip xx.xx.xx.xx, я думаю.

jfklein jfklein
10 февр. 2019 г. 23:22:29
2

За пять лет, что этот вопрос здесь находится, никто не затронул основную проблему: Безопасность через скрытность — это действительно эффективный метод для защиты от автоматизированных ботов и поддержания чистоты логов. Основная цель перемещения/скрытия wp-admin заключается в том, чтобы боты воспринимали сайт как не WordPress.

Мой способ скрытия (но не перемещения) wp-admin заключается в том, чтобы показывать ботам стандартную 404 страницу при попытке доступа к этому URL. Только доступ с моего домашнего IP-адреса позволяет успешно загрузить страницу wp-admin. Этот метод создает у атакующего/бота впечатление, что wp-admin не существует, при этом не нарушая работу ядра WordPress или плагинов, которые жестко прописывают путь к wp-admin. Данный код в .htaccess реализует эту логику:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteRule ^/?wp-admin - [R=404,L]

Естественно, при использовании кода замените 12.34.56.78 на ваш собственный IP-адрес. Не забудьте экранировать символы ., так как IP-адрес интерпретируется как регулярное выражение.

21 июл. 2015 г. 17:09:51
Комментарии

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

okainov okainov
19 янв. 2020 г. 22:51:40

@TheGodFather: Тогда обновите RewriteCond соответствующим образом

dotancohen dotancohen
21 янв. 2020 г. 16:07:35
0

Я нашел решение для переноса входа в Wordpress с /login/, /wp-admin/ или /wp-login.php на /cms, используя только правила перезаписи в .htaccess.

Плагины не нужны!

Вставьте это в файл .htaccess в корне проекта:

<IfModule mod_rewrite.c>
      # Перенос входа на /cms.
      RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$
      RewriteCond %{HTTP_REFERER} !/cms(.*)$
      RewriteCond %{REQUEST_METHOD} POST
      RewriteRule ^(.*) ./cms?message=wrong_login_path [R=302,L]
      RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$
      RewriteCond %{QUERY_STRING} !^cms=unlocked
      RewriteCond %{REQUEST_METHOD} !POST
      RewriteRule ^(.*) ./cms?message=redirect_to_custom_login_path [R=302,L]
      RewriteRule ^cms wp-login.php?cms=unlocked [L]
</IfModule>

Удачи!

Обновление: Я улучшил некоторые правила, чтобы даже POST-запросы к /wp-login.php вызывали 403 forbidden error. Это поможет против ботов, которые пытаются войти в админку методом перебора. Оставляйте комментарии к этому посту, если у вас есть предложения по улучшению этих правил.

31 янв. 2018 г. 12:01:21
0

Просто создайте новые страницы входа в поддиректориях. Скопируйте существующую страницу wp-login в новую директорию в корне вашего сайта (например, "/login"), переименуйте её в index.php, добавьте WordPress bootstrap в начало страницы и модифицируйте её по своему усмотрению (темизация и т.д.).

Вам потребуется немного изменить стандартный код страницы входа, в основном заменяя жёстко прописанные ссылки и редиректы на "wp-login.php". Но если вы оставите все хуки и фильтры на месте, этот подход не нарушит интеграцию с плагинами. Обновления ядра WordPress также будут работать нормально, если только обновление не включает изменения самой страницы wp-login (что редко происходит в минорных версиях).

Таким же способом можно создать страницы пользовательских аккаунтов (я обычно размещаю их в директории "/profile"). После этого пользователям с ролью "подписчик" вообще не нужно будет заходить в wp-admin, и вы сможете защитить его с помощью htaccess-файла. Именно это даёт вам дополнительную безопасность, которую вы ищете. Только не забудьте добавить исключение в htaccess для файла admin-ajax, так как некоторые плагины используют его на фронтенде.

Уверен, что вы не найдёте решения исключительно с помощью плагинов. Но если найдёте - дайте нам знать!

18 апр. 2011 г. 07:15:40
0

Вы можете использовать этот плагин:

http://wordpress.org/extend/plugins/wp-login/

Вы можете просто создать страницу и указать плагину, что это страница входа. По сути, он просто перенаправляет wp-login.php на вашу "страницу". Так что любой бот, ищущий wp-login.php, будет перенаправлен на вашу "страницу".

Для защиты страницы входа от ботов следует использовать комбинацию cookie и .htaccess, так как большинство ботов не используют куки. Например, так:

RewriteCond %{HTTP_COOKIE} !^PHPSESSID=\w+ [OR]
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?example\.com/ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^wp-(comments-post|login|register)\.php http://example\.com [R=301,L,NS]

В приведенном примере я использую PHP Session Cookie, так как это самый простой вариант для реализации.

9 июл. 2012 г. 02:55:40
0

Этот ответ является дополнением к ответу dotancohen, так как он неполный. Ответ dotancohen не учитывает wp-login.php, что важно, если вы пытаетесь скрыть WordPress.

Вот как можно вернуть ошибку 404 для обоих wp-admin и wp-login.php:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteCond %{THE_REQUEST} \ /+wp-(admin|login)
5 мая 2017 г. 11:54:56
4

Вы можете попробовать отредактировать файл .htaccess и выполнить перенаправление на другой удобный вам путь.

23 февр. 2011 г. 05:34:09
Комментарии

Вы говорите о перезаписи URL с помощью .htaccess? Разве это не нарушает внутренние основные функции?

user931 user931
23 февр. 2011 г. 08:15:30

Ну... если сделать это правильно, ничего не должно сломаться. Прочитав ваш апдейт, я бы предложил переименовать (или переместить) ваши логин-файлы в другую директорию/путь. Что вы думаете насчёт этого? Другой поддомен? Или просто другой путь?

konus konus
23 февр. 2011 г. 17:40:17

Просто другой путь..

user931 user931
26 февр. 2011 г. 00:01:31

Тогда вы можете выполнить Поиск и замену во всех файлах WordPress, затем переименовать файлы с тем же шаблоном имен, и после этого переименовать папку wp-admin. Это немного сложно, и вы будете привязаны к этой версии (любое обновление сломает эти изменения)

konus konus
26 февр. 2011 г. 08:57:46
0

Чтобы изменить URL выхода (в админке), отредактируйте ваш файл functions.php:

add_filter( 'logout_url', 'custom_logout_url');
function custom_logout_url( $login_url)
{
   // Заменяем стандартный wp-login на ваш файл выхода
   $url = str_replace( 'wp-login', 'your_logout_file', $login_url );
   return $url;
}
25 апр. 2013 г. 13:34:56
0
-5

Я решил эту проблему, удалив три своих блога и изменив параметры limit-login на максимально возможные значения — 9999.

Что касается одного спамера с IP-адресом 208.91.199.94, который атаковал мою страницу входа 750 раз за последние два дня, я работаю над другими способами его устранения.

8 июл. 2012 г. 20:30:38