Отключите или перенаправьте WP-login.php

Есть ли способ предотвратить посетителей, или вошел в систему или не от достижения mysite.com/wp-login.php?

У меня есть отдельная форма входа в систему, которая является всем, в чем мы нуждаемся. Я знаю, что могу модернизировать форму, сгенерированную wp-login но я не должен иметь дело с ним вообще. Я попробовал различные фильтры и рычаги, и я, может казаться, не заставляю это перенаправлять. Я также пытался использовать a .htaccess перенаправление и я нашли, что это работает, но затем оно препятствует тому, чтобы моя пользовательская форма входа в систему/выхода из системы работала.

Идеи?

9
21.05.2013, 00:33
5 ответов

Попробуйте это в functions.php своей темы

add_action('init','custom_login');

function custom_login(){
 global $pagenow;
 if( 'wp-login.php' == $pagenow && !is_user_logged_in()) {
  wp_redirect('http://yoursite.com/');
  exit();
 }
}
10
19.02.2020, 22:01
  • 1
    , работающий на меня, но я имею, выходят из системы проблемы и фигура наклона почему –  Androliyah 24.08.2012, 06:26
  • 2
    Поскольку дескрипторы wp-login.php, выходящие из системы также. –  Brian Fegter 24.08.2012, 07:02
  • 3
    Да, это блокирует мою пользовательскую форму входа в систему. Но если был способ надежно проверить на var запроса или возможно ссылающийся домен? IOW: это могло бы быть начальной точкой. Кто-либо еще? TIA---JC –  jchwebdev 24.08.2012, 10:15
  • 4
    да, wp-вход-в-систему действительно обрабатывает выходить из системы. Lol. Это логично. Возможно, этот код с плагином будет достаточен. Позвольте мне видеть то, что еще мы можем использовать, потому что я очень не хочу использовать wp-вход-в-систему. –  Androliyah 24.08.2012, 22:12
  • 5
    Все я думаю, необходимо, должен был бы контролировать запрос Вар, когда wp-вход-в-систему загружается. У меня просто нет машины, которая может сделать это прямо сейчас. –  jchwebdev 25.08.2012, 03:34

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

В Apache автор реализован через комбинацию htaccess и файла паролей. В первый раз, в рамках сеанса браузера, к которому любой пытается получить доступ wp-login.php они будут запрошены ввести имя пользователя и пароль (прежде чем вход в систему Wordpress).

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

0
19.02.2020, 22:01
  • 1
    . Я предполагаю, что 'подсказка' является модальным всплывающим окном браузера для ввода учетных данных. Я думаю, что это вызвало бы беспорядок. Идеально то, что я хочу, - чтобы тот URL сделал - ничто... или возможно просто перенаправляет к домашней странице. Но спасибо за это. Изучайте что-то новое каждый день! –  jchwebdev 27.05.2013, 05:57
  • 2
    То, что Вы, думают, что Вы делаете, является "безопасностью через мрак". Но в действительности Вы только делаете мрак, и это ужасно. Не используйте его. Автор является безопасностью. Сокрытие точки ввода является мраком. security.stackexchange.com/questions/32064 / … –  Gaia 27.05.2013, 14:50
  • 3
    Другими словами, даже если Вы изменяете местоположение wp-входа-в-систему, все еще необходимо использовать автора: "Я должен полагаться на изменение сервера от 22 для портирования 2222 для защиты моего соединения? Абсолютно нет. Это плохо для изменения моего сервера SSH для портирования 2222 также с помощью пароля? Нет, если что-нибудь это - лучшее решение. Изменение ("Затемнения") порта просто сократит "кучу" автоматических сканеров использования, ищущих обычные порты. Мы получаем преимущество безопасности через мрак, который хорош, но мы не рассчитываем на мрак. Если бы они нашли его, то они все еще должны взломать пароль". –  Gaia 27.05.2013, 15:41
  • 4
    Спасибо за это. Я изучил много. Не, что я искал, но все еще... очень полезный. Лучше всего---JC –  jchwebdev 31.05.2013, 06:51

Добавьте ПОЛУЧИТЬ var для действия выхода из системы, и оно хорошо работает.

add_action('init','custom_login');

function custom_login(){
 global $pagenow;
 if( 'wp-login.php' == $pagenow && $_GET['action']!="logout") {
  wp_redirect('http://YOURSITE.com/');
  exit();
 }
}
3
19.02.2020, 22:01
  • 1
    До сих пор это является самым близким к тому, что мы хотим. Если мы удаляем выход () и изменяем wp_redirect на нашу пользовательскую страницу входа в систему, это, кажется, делает задание. –  jchwebdev 15.07.2014, 22:11

Я использовал плагин WordPress, Переименовывают wp-login.php для вполне когда-то.

Это позволяет Вам переключиться wp-login.php к любому другому пути. У меня был хлопок ботов мои страницы входа в систему, и теперь я получаю нулевые хиты.

2
19.02.2020, 22:01

После нахождения этого вопроса и тестирования нескольких ответов, ниже "очищенная" версия того, что я использую в продуктивной среде.

Эта версия не бросает уведомлений / ошибки и также позволяет, чтобы сбросы пароля работали:

// Hook the appropriate WordPress action
add_action('init', 'prevent_wp_login');

function prevent_wp_login() {
    // WP tracks the current page - global the variable to access it
    global $pagenow;
    // Check if a $_GET['action'] is set, and if so, load it into $action variable
    $action = (isset($_GET['action'])) ? $_GET['action'] : '';
    // Check if we're on the login page, and ensure the action is not 'logout'
    if( $pagenow == 'wp-login.php' && ( ! $action || ( $action && ! in_array($action, array('logout', 'lostpassword', 'rp', 'resetpass'))))) {
        // Load the home page url
        $page = get_bloginfo('url');
        // Redirect to the home page
        wp_redirect($page);
        // Stop execution to prevent the page loading for any reason
        exit();
    }
}
16
19.02.2020, 22:01
  • 1
    Это, кажется, предотвращает (хороший) WP-вход-в-систему, но заключительный выход (), кажется, предотвращает фактический вход в систему () от появления вообще, которое не является тем, что мы хотим. Мы хотим, чтобы люди смогли войти в систему, просто никогда не не видеть экран WP-Login. Если они вводят неправильный PW, он должен перенаправить к нашей пользовательской странице входа в систему. –  jchwebdev 15.07.2014, 21:52
  • 2
    Отредактированный это и это теперь работает: необходимо проверить, заполнен ли $action прежде, чем сделать in_array () –  simonthesorcerer 22.07.2014, 00:45
  • 3
    , Это не работало на меня. Я мог все еще войти в систему. –  Mike 03.10.2015, 06:43
  • 4
    @Mike - Вы уверены, что Ваш рычаг берет / работа? Что происходит, если Вы помещаете echo "HERE"; в функции? Это отзывается эхом? –  cale_b 03.10.2015, 17:41
  • 5
    @cale_b Да, рычаг хорошо работает. Проблема - это $_GET['action'] пусто для меня. Форма отправляется на /wp-login.php (ни с кем ПОЛУЧАЮТ переменные в URL), и рассмотрение источника нет даже в названном помещенном action, настолько ровный $_REQUEST['action'] пусто. –  Mike 04.10.2015, 01:24

Теги

Похожие вопросы