Можно ли переименовать папку wp-admin?

70

Можно ли переименовать папку wp-admin?

Я знаю, что могу просто переименовать его, но если это не поддерживается кодом, многое может сломаться.

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

Адам Демпси
источник

Ответы:

39

К сожалению, в настоящее время это невозможно, и, похоже, нет желания рассматривать его как модификацию, как вы можете видеть по этой недавней теме в списке wp-хакеров и в этом тикете .

Если вы действительно хотите увидеть это снова, я бы предложил:

  1. Представьте ваше дело на wp-хакерах, но будьте предупреждены, что ваш сценарий лучше использовать, а не «безопасность через неизвестность», иначе он будет сбит, как указано выше.

  2. Представьте свой аргумент в trac-билете с теми же оговорками.

  3. Более того, загрузите патч в trac, который включает желаемую функциональность. Гораздо сложнее сказать «нет», когда работа уже выполнена (но, конечно, они предпочитают говорить «нет» гораздо чаще, чем «да», так что будьте предупреждены).

MikeSchinkel
источник
10
+1 у них есть предпочтение говорить «нет» гораздо чаще, чем они говорят «да», так что имейте это в виду :)
Сисир
11

Нет, вы не можете переименовать папку. Путь жестко задан в нескольких местах по всему исходному тексту WordPress.

Безопасность через неизвестность в любом случае не является безопасностью.

Viper007Bond
источник
21
И это в лучшем случае ленивое оправдание, чтобы не менять плохие методы программирования, такие как жесткое программирование магических чисел или строк.
Хакре
6
@hakre +100 Кстати, большинство людей, спрашивающих, как скрыть папки "wp- *", не обязательно ищут безопасность, они на самом деле ищут неясности ... они пытаются сделать анализ своих сайтов более трудоемким делом.
Виктор Фараздаги
3
На самом деле, это не безопасность по неизвестности. Это непонятный URL, действующий метод защиты. Смотрите ответ ниже для деталей.
CMC
1
Что ж, я попытался найти новый набор аргументов, но ответ был: «Это сильное исправление в книге» и довольно сопливое «имя входа в gmail также не скрывает URL». Никаких технических причин, никаких объяснений, никаких споров, просто они этого не сделают.
CMC
1
Wordpress гораздо почтительнее, чем Gmail. Одной из причин является то, что WordPress с открытым исходным кодом. Все знают код. Безопасность через неизвестность в любом случае не является безопасностью? Но мы не кодер WordPress. Это с открытым исходным кодом. На мой взгляд, безвестность помогает обезопасить себя. Почему люди тогда используют зашифрованный пароль? Согласно этой логике, пароль шифрования не используется .... Потому что, если базу данных можно просматривать, хакер может делать все, что угодно ... Мой WordPress взламывается 2 раза и 2 раза WordPress моей компании за 10 лет ... И за
последние
11

Люди продолжают задавать этот вопрос, но люди продолжают отмечать его как дубликат. Выбранный ответ для этого, однако, на самом деле не является ответом на вопрос.

Чтобы переименовать администратора WordPress, вам нужно сделать два шага.

В следующем коде я использую панель инструментов в качестве имени моего нового wp-admin. Измените панель управления в приведенном ниже коде на имя нового администратора.

Сначала вам нужно сказать WordPress, что вы хотите изменить адрес администратора.

В строке 2558 wp-includes / link-template.php - это код, который определяет URL-адрес администратора.

Используя admin_urlфильтр, вы можете успешно изменить URL-адрес администратора с помощью следующей функции:

function my_custom_admin_url($path) { 
    return str_replace('wp-admin', 'dashboard', $path); 
}
add_filter('admin_url', 'my_custom_admin_url');

Вы можете проверить, какой у вас новый URL, выполнив это:

function whats_my_admin_url() {
    $url = admin_url();
    echo '<pre><code>'; print_r( $url ); echo '</code></pre>';
    }
add_action( 'admin_notices', 'whats_my_admin_url' );

Тем не менее, если вы заметите, нажимая через администратора, что не все работает, и некоторые ссылки могут дать вам 404 не найден или что-то подобное.

Во-вторых, измените .htaccess в корневом каталоге WordPress и добавьте следующее в начале, прежде чем что-либо еще.

#CUSTOM ADMIN URL REWRITE
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dashboard[^/]*$ dashboard/ [R=301,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^dashboard(.*)$ wp-admin$1? [QSA,L,NE]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/?$ / [NE,R=404,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/(.*)$ dashboard/$1 [QSA,R=301,L,NE]
</IfModule>
#CUSTOM ADMIN URL REWRITE

Теперь я не эксперт, когда дело доходит до редактирования .htaccess, поэтому некоторые из них могут не понадобиться. Тем не менее, я никогда не находил, что это не работает.

Вот и все. Создайте файл и поместите его в папку плагинов или папку mu-plugins. (не забудьте изменить каждый экземпляр панели мониторинга на предпочитаемый вами адрес администратора)

<?php
/**
 * Plugin Name: Change My Admin URL
 * Plugin URI: http://wordpress.stackexchange.com/questions/106/can-i-rename-the-wp-admin-folder
 * Description: Changes the admin url where wp-admin becomes dashboard (or whatever you change it to)
 * Version: 1.0
 * Author: Bryan Willis
 * Author URI: http://profiles.wordpress.org/codecandid
 * License: GPL2
 */

/* 

#CUSTOM ADMIN URL REWRITE FOR HTACCESS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dashboard[^/]*$ dashboard/ [R=301,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^dashboard(.*)$ wp-admin$1? [QSA,L,NE]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/?$ / [NE,R=404,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/(.*)$ dashboard/$1 [QSA,R=301,L,NE]
</IfModule>
#CUSTOM ADMIN URL REWRITE

*/

function my_custom_admin_url($path) { 
    return str_replace('wp-admin', 'dashboard', $path); 
}
add_filter('admin_url', 'my_custom_admin_url');

Вопросы?

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

Обновление: альтернативный подход

Это очень похоже, но по некоторым причинам мой ответ выше не работал на каждом хосте, который я пробовал.

добавить в .htaccess

RewriteRule ^admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]

Создайте файл в папке mu-plugins new-admin.phpи добавьте его туда:

<?php
define('WP_ADMIN_DIR', 'admin');
defined('SITECOOKIEPATH') || define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl') . '/' ) );
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);

add_filter('site_url',  'wpadmin_filter', 10, 3);
 function wpadmin_filter( $url, $path, $orig_scheme ) {
  $old  = array( "/(wp-admin)/");
  $admin_dir = WP_ADMIN_DIR;
  $new  = array($admin_dir);
  return preg_replace( $old, $new, $url, 1);
}

Примечание. Этот подход, похоже, работал лучше на некоторых хостах, но все еще имел проблему с тем, чтобы не перенаправлять ссылки wp-admin на новый адрес администратора. Вот подход, который я попробовал ниже. Хотя это ниже не работает, я думаю, что это на правильном пути. Я не совсем уверен, какой крючок использовать. htaccess может быть лучшей альтернативой, но я продолжал получать петли перенаправления, когда пытался таким образом.

add_action('init', 'redirect_wp_admin_url_to_404');
function redirect_wp_admin_url_to_404(){
  $redirect_to = $_SERVER['REQUEST_URI'];
  if(count($_REQUEST)> 0 && array_key_exists('redirect_to', $_REQUEST)){
    $redirect_to = $_REQUEST['redirect_to'];
    $check_wp_admin = stristr($redirect_to, 'wp-admin');
    if($check_wp_admin){
      wp_safe_redirect( '404.php' );
    }
  }
}
Брайан Уиллис
источник
Здесь есть похожий подход, записанный в классе: wordpress.stackexchange.com/a/7832/76440
majick
Рад, что вы указали этот ответ @makick! Это отличный ответ, и на самом деле я получил некоторые идеи, но во многих случаях мне это не помогло, и именно здесь мои изменения вступили в игру. Одна вещь, которую я до сих пор пытаюсь выяснить, - это как перенаправить все ссылки wp-admin, которые вводятся вручную в URL. Я не могу понять это. Если у вас есть шанс, попробуйте мой обновленный ответ внизу, используя site_urlфильтр вместо admin_url. Кажется, работает довольно хорошо.
Брайан Уиллис
9

Подход, который официально поддерживается WordPress, заключается в перемещении установочных файлов WordPress в подкаталог с сохранением сайта в корне, например:

Адрес сайта: http://my-blog.com

URL администратора: http://my-blog.com/7nxnkkugrdzm/wp-admin

Хотя это не дает вам полной свободы в изменении URL-адреса администратора, это означает, что вы можете добавить к нему любой префикс . Это так же хорошо с точки зрения безопасности. Он также имеет преимущество, заключающееся в перемещении всех установочных файлов WordPress в место, неизвестное пользователям, поэтому оно должно быть частью любой стратегии защиты WordPress.

Из кодекса WordPress: предоставление WordPress собственного каталога

Также обратите внимание, что хотя эта схема безопасности называется Obscure URL , это не то же самое, что безопасность по неизвестности . Непонятный URL-адрес является совершенно допустимой схемой безопасности, которая так же хороша, как и пароль, в то время как безопасность по неясности основывается на использовании секретных недоказанных процедур.

Те же предостережения применяются , хотя , как с паролями: Назовите что - то пользовательские папки , как 7nxnkkugrdzm, не happy-snappy-admin. Кроме того, убедитесь, что ваши пользователи знают, что админка является секретом.

КМЦ
источник
7

На самом деле есть очень хорошее руководство по этому вопросу здесь:

Как скрыть информацию WordPress от зеркала исходного кода

Включает в себя, как переименовать wp-контент, переименовать wp-admin и удалить тег генератора из WordPress.

Этот учебник изменит очевидные доказательства или указания на это в вашем исходном коде, эффективно удаляя информацию WordPress с вашего сайта .

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

Graeme
источник
6

Если вы хотите, чтобы пользователи уровня подписчика не видели каталог wp-admin, вы можете создавать автономные версии страниц входа в систему / регистрации и профиля / редактирования в своих собственных каталогах. Затем вы можете защитить вашу папку администратора с помощью htaccess или IP-ограничения. (Хотя, если вы сделаете это, вы должны сделать исключение для файла admin-ajax, так как некоторые плагины используют его для добавления функциональности AJAX).

Такой подход дает вам желаемую «неясность» (которая на самом деле мало что дает, но часто заставляет клиентов и менеджеров чувствовать себя лучше), а также добавляет реальной безопасности, ограничивая доступ администратора. Плюс, честно говоря, URL, который просто говорит "/ login", выглядит намного лучше, чем "wp-login.php".

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

MathSmath
источник
2

Один из способов заблокировать административную панель управления - использовать правила .htaccess. Просто добавьте файл .htaccess в корень каталога wp-admin. После добавления этого файла просто добавьте следующее правило, чтобы запретить все IP-адреса и разрешить только ваш IP:

http://wp.tutsplus.com/tutorials/10-steps-to-securing-your-wordpress-installation/

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
whitelist address
allow from <IP ADDRESS HERE>
</LIMIT>
мистифицировать
источник
1

Если вы хотите переименовать wp-admin с целью добавления дополнительного уровня безопасности к вашей установке WordPress, вы также можете попробовать Boilerplate Roots / Bedrock WordPress . Это может помочь изолировать веб-корень, чтобы ограничить доступ к не-веб-файлам. Он также может помочь в организации / защите всего ядра WordPress, поместив его в свой собственный подкаталог, например, переименование wp-content / в app /, а также в следующие дополнительные функции:

  • Управление зависимостями с помощью Composer
  • Простая настройка WordPress с файлами, специфичными для окружения
  • Переменные среды с Dotenv
  • Автозагрузчик для mu-plugins (используйте обычные плагины как mu-plugins)
  • Повышенная безопасность (разделение веб-корня и безопасных паролей с помощью wp-password-bcrypt)

Вы также можете проверить их GitHub Repo для более детального использования:

Карл Альберто
источник
0

Взгляните на http://wordpress.org/extend/plugins/stealth-login/, это может вам помочь.

edelwater
источник
У меня были проблемы с этим плагином, когда я попробовал его. И в настоящее время он, похоже, не поддерживается и не совместим с WP 3.x
Rarst
ах ... плохо, не проверял, я удалил это некоторое время назад. Но, эй ... может, кто-то может это исправить, если действительно нуждается.
Эдельвотер
в качестве альтернативы, пожалуйста, смотрите wordpress.stackexchange.com/questions/4037/…
hakre
0

Нет, невозможно переименовать папку wp-admin с любым недостатком кода или взломом htaccess,

В прошлом я делал то же самое для клиента, выполняя полный поиск по папке через Coda (редактор, который я использую) для тега «wp-admin, wp-content ... и т. Д.», И я удалял «wp-» из файлы.

После этого вы сможете установить его, но:
вы должны сделать то же самое с плагинами, которые хотите установить, вы должны обновить ядро ​​вручную, очистив тег «wp-» от новых версий.

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

Кристиан из Cozmolabs написал очень хороший урок. Вы можете немного отредактировать код и запустить его в любой теме WordPress.

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

Здесь вы можете увидеть пример и код о том, как создать страницу Frontend Post. Front-End Post Submission

Также вы можете посмотреть здесь несколько хороших плагинов, которые делают то же самое с большей функциональностью.

Филипп
источник
0

ЧТО О РАБОТАЮЩЕМ WP-ADMIN ИЗ IFRAME?

Создайте новую страницу в wp dashboard под названием «Admin». Например: ваш домен / администратор /

Вы можете сделать заявление с делом header.php page.phpи / или footer.phpотключить ненужные элементы в шаблоне, используя:

<?php
if(!is_page('admin')): //if not the admin page.

//wrap code not needed or wanted.

else: ?>

<style type="text/css">
    .responsive-iframe {
    position: relative;
    padding-bottom: 56.25%; /*16:9*/
    height: 0;
    overflow: hidden;

    iframe {
        position: absolute;
        top:0;
        left: 0;
        width: 100%; //or 100vw
        height: 100%; //or 100vh
    }
}   
</style>

<div class="responsive-iframe">
<iframe seamless="seamless" scrolling="yes" src="http://yourdomain/wp-admin/" frameborder="0" allowfullscreen></iframe>
</div>

<?php 
endif;

Это не красиво, но, по крайней мере, до некоторой степени вы можете скрыть wp-admin от URL. Другой способ - возможно использовать переадресацию домена с включенным URL-адресом маски.

samjco
источник