Czy mogę zmienić nazwę folderu wp-admin?

69

Czy można zmienić nazwę folderu wp-admin?

Wiem, że mógłbym po prostu zmienić jego nazwę, ale jeśli nie jest to obsługiwane przez kod, wiele rzeczy by się zepsuło.

Jeśli użyję niestandardowej nazwy folderu, spowoduje to, że będzie ona nieco bezpieczniejsza, bezpieczeństwo przez niejasność i tak dalej.

Adam Dempsey
źródło

Odpowiedzi:

38

Niestety nie jest to obecnie możliwe, ani nie wydaje się, że będzie to traktowane jako modyfikacja, co widać po tym ostatnim wątku na liście wp-hackerów i tym zgłoszeniu na trac .

Jeśli naprawdę chcesz to zobaczyć, sugeruję:

  1. Zaprezentuj swoją sprawę na wp-hackerach, ale ostrzegaj, że twoja skrzynka użytkownika powinna być dobra, a nie „bezpieczeństwo przez zaciemnienie”, bo zostanie zestrzelona jak wyżej.

  2. Przedstaw swoje argumenty na karcie trac z tymi samymi zastrzeżeniami.

  3. Co więcej, prześlij łatkę do śledzenia, która zapewnia pożądaną funkcjonalność. O wiele trudniej jest powiedzieć „nie”, gdy praca została już wykonana (ale oczywiście wolą mówić „nie” częściej niż mówią „tak”, więc ostrzegajcie.)

MikeSchinkel
źródło
10
+1 wolą częściej mówić „nie” niż „tak”, więc bądźcie ostrzeżeni :)
Sisir,
11

Nie, nie możesz zmienić nazwy folderu. Ścieżka jest zakodowana na stałe w wielu lokalizacjach w źródle WordPress.

Bezpieczeństwo poprzez zaciemnienie nie jest tak naprawdę zabezpieczeniem.

Viper007Bond
źródło
21
Jest to w najlepszym razie leniwa wymówka, aby nie zmieniać złych praktyk programistycznych, takich jak kodowanie magicznych liczb lub ciągów znaków.
hakre
6
@hakre +100 Btw, większość ludzi pytających, jak ukryć foldery „wp- *” niekoniecznie szuka bezpieczeństwa, faktycznie szuka niejasności .. próbują sprawić, by analiza ich witryn była bardziej wymagająca.
Victor Farazdagi,
3
Właściwie to nie jest bezpieczeństwo przez zaciemnienie. To niejasny adres URL, poprawna technika bezpieczeństwa. Szczegóły znajdziesz w odpowiedzi poniżej.
cmc
1
Cóż, próbowałem śledzić z nowym zestawem argumentów, ale odpowiedź brzmiała: „To jest mocny wontfiks w książce” i raczej zasmarkany „login Gmaila też nie jest niejasny”. Bez technicznych powodów, bez wyjaśnień, bez debaty, po prostu tego nie zrobią.
cmc,
1
Wordpress jest znacznie bardziej czcigodny niż Gmail. Jednym z powodów jest to, że wordpress jest oprogramowaniem typu open source. Każdy zna kod. Bezpieczeństwo przez zaciemnienie nie jest tak naprawdę zabezpieczeniem? Ale nie jesteśmy koderem wordpress. Jest open source. Moim zdaniem niejasność pomaga w zapewnieniu bezpieczeństwa. Dlaczego ludzie używają zaszyfrowanego hasła? Zgodnie z tą logiką nie ma zastosowania hasła szyfrującego .... Ponieważ jeśli baza danych jest widoczna, haker może zrobić wszystko ... Moje wordpress jest zhakowany 2 razy i 2 razy wordpress mojej firmy w 10 lat ... I żadne z moich 6-7 kont Gmail nie zostało
zhackowanych od
11

Ludzie wciąż zadają to pytanie, ale wciąż zaznaczają je jako duplikaty. Wybrana odpowiedź na to pytanie nie jest jednak odpowiedzią na pytanie.

Aby zmienić nazwę administratora wordpress, musisz wykonać dwa kroki.

W poniższym kodzie używam pulpitu nawigacyjnego jako nazwy mojego nowego administratora wp-admin. Zmień pulpit nawigacyjny w poniższym kodzie na dowolną nazwę nowego administratora.

Najpierw musisz powiedzieć wordpressowi, że chcesz zmienić adres administratora.

W linii 2558 wp-zawiera / link-template.php to kod, który wykreśla adres URL administratora.

Za pomocą admin_urlfiltra możesz z powodzeniem zmienić adres URL administratora za pomocą następującej funkcji:

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

Możesz przetestować, aby zobaczyć, jaki jest Twój nowy adres URL, wykonując następujące czynności:

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' );

Jeśli jednak zauważysz po kliknięciu przez administratora, że ​​nie wszystko działa, a niektóre linki mogą spowodować 404 nie znaleziono lub coś podobnego.

Po drugie, zmień .htaccess w katalogu głównym Wordpress i dodaj następujące na początku, zanim cokolwiek innego.

#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

Teraz nie jestem ekspertem w dziedzinie edycji .htaccess, więc niektóre z nich mogą nie być konieczne. Jednak nigdy nie znalazłem, żeby to nie działało.

Oto cała sprawa. Utwórz plik i upuść w folderze wtyczek lub folderze mu-plugins. (pamiętaj, aby zmienić każde wystąpienie pulpitu nawigacyjnego na preferowany adres administratora)

<?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');

Zagadnienia?

Od ponad roku nie stosuję tej metody. Możesz zauważyć, że wp-admin nadal będzie działał, co jest do bani, ale jest to raczej środek ostrożności niż cokolwiek innego. Miałem kilka źle napisanych wtyczek, które zakodowały wp-admin w niektórych miejscach, które nie ładowałyby się podczas próby zablokowania lub przekierowania wp-admin. Jestem pewien, że można to zrobić za pomocą htaccess, ale nie udało mi się tego rozgryźć. Ponadto nie było to nigdy testowane na wielu witrynach ani w żadnym innym tego rodzaju.

Aktualizacja: podejście alternatywne

Jest to dość podobne, ale z jakiegoś powodu moja powyższa odpowiedź nie działała na każdym hostie, którego próbowałem.

Dodać do .htaccess

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

Utwórz plik w folderze mu-plugins o nazwie new-admin.phpi dodaj go tam:

<?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);
}

Uwaga: to podejście wydawało się działać lepiej na niektórych hostach, ale nadal występował problem polegający na tym, że nie przekierowywał łączy wp-admin do nowego adresu URL administratora. Oto podejście, które wypróbowałem poniżej. Chociaż to poniżej nie działa , myślę, że jest na dobrej drodze. Nie jestem do końca pewien, jakiego haka użyć. htaccess może być lepszą alternatywą, ale próbowałem w ten sposób otrzymywać pętle przekierowań.

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' );
    }
  }
}
Bryan Willis
źródło
Istnieje podobne podejście zapisane w klasie tutaj: wordpress.stackexchange.com/a/7832/76440
majick
Cieszę się, że wskazałeś tę odpowiedź na @makick! To świetna odpowiedź i właściwie to właśnie z niej zacząłem czerpać pomysły, ale wydawało się, że nie działało to dla mnie w wielu przypadkach i właśnie tam zaczęły się moje zmiany. Jedyne, co wciąż próbuję ustalić, to jak przekierować wszystkie linki wp-admin, które są wpisywane ręcznie w adresie URL. Nie mogę tego rozgryźć. Jeśli masz szansę, wypróbuj moją odpowiedź dotyczącą aktualizacji w dół, używając site_urlfiltru zamiast admin_url. Wygląda na to, że działa całkiem dobrze.
Bryan Willis
9

Podejście, które jest oficjalnie obsługiwane przez WordPress, polega na przeniesieniu plików instalacyjnych WordPress do podkatalogu, przy jednoczesnym zachowaniu witryny w katalogu głównym, w następujący sposób:

Strona URL: http://my-blog.com

Adres URL administratora: http://my-blog.com/7nxnkkugrdzm/wp-admin

Chociaż nie daje to całkowitej swobody w zmianie adresu administratora, oznacza to, że możesz go poprzedzić dowolną nazwą. Jest to równie dobre z punktu widzenia bezpieczeństwa. Ma również tę zaletę, że przenosi wszystkie pliki instalacyjne WordPress w nieznane użytkownikom miejsce, dlatego powinno być częścią każdej strategii hartowania WordPressa.

Z Kodeksu WordPress: Nadawanie WordPressowi własnego katalogu

Zauważ też, że chociaż ten schemat bezpieczeństwa nazywa się Nieczytelny adres URL , to nie jest to samo, co bezpieczeństwo przez zaciemnienie . Niewyraźny adres URL jest całkowicie poprawnym schematem bezpieczeństwa, który jest tak samo dobry jak hasło, podczas gdy bezpieczeństwo przez ukrywanie polega na użyciu tajnych niepotwierdzonych procedur.

Obowiązują te same zastrzeżenia, co w przypadku haseł: nazywaj folder niestandardowy czymś podobnym 7nxnkkugrdzm, nie happy-snappy-admin. Upewnij się również, że użytkownicy wiedzą, że adres administratora jest tajny.

cmc
źródło
7

Tutaj jest bardzo dobry samouczek:

Jak ukryć informacje WordPress przed lustrem kodu źródłowego

Obejmuje to, jak zmienić nazwę wp-content, zmienić nazwę wp-admin i usunąć tag generatora z WordPress.

Ten samouczek zmieni oczywiste dowody lub oznaki tego w kodzie źródłowym, skutecznie usuwając informacje WordPress z Twojej witryny .

Wyjaśnia, jak zmienić nazwę folderu, adres URL logowania wp-admin i upewnić się, że login.php przekierowuje do strony głównej, aby ludzie mogli tam wejść bezpośrednio.

Graeme
źródło
6

Jeśli chcesz, aby użytkownicy na poziomie subskrybentów nie widzieli katalogu wp-admin, możesz utworzyć samodzielne wersje stron logowania / rejestracji i profilu / edycji we własnych katalogach. Następnie możesz zabezpieczyć swój folder administracyjny za pomocą htaccess lub ograniczenia IP. (Chociaż jeśli to zrobisz, powinieneś zrobić wyjątek dla pliku admin-ajax, ponieważ niektóre wtyczki używają go do dodawania funkcji AJAX).

Takie podejście zapewnia pożądane „zaciemnienie” (które tak naprawdę niewiele robi, ale często poprawia samopoczucie klientów i menedżerów), a także zapewnia pewne realne bezpieczeństwo poprzez ograniczenie dostępu do administratora. Dodatkowo, szczerze mówiąc, URL, który mówi tylko „/ login”, wygląda o wiele ładniej niż „wp-login.php”.

Nie trzeba dodawać, że nie czyni to witryny kuloodporną. Ale to miłe, podstawowe ulepszenie.

MathSmath
źródło
2

Jednym ze sposobów zablokowania administracyjnego panelu sterowania jest użycie reguł .htaccess. Wystarczy dodać plik .htaccess do katalogu głównego katalogu wp-admin. Po dodaniu tego pliku wystarczy dodać następującą regułę, aby odmówić wszystkich adresów IP i zezwolić tylko na Twój adres 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>
Josh
źródło
1

Jeśli chcesz zmienić nazwę wp-admin w celu dodania dodatkowej warstwy zabezpieczeń do instalacji WordPress, możesz również wypróbować Roots / Bedrock WordPress Boilerplate . Może pomóc w wyizolowaniu katalogu głównego, aby ograniczyć dostęp do plików innych niż internetowe. Może także pomóc w organizacji / zabezpieczeniu całego rdzenia WordPress poprzez umieszczenie go w jego własnym podkatalogu, np. Zmiana nazwy wp-content / na app /, a także następujące dodatkowe funkcje:

  • Zarządzanie zależnościami za pomocą Composer
  • Łatwa konfiguracja WordPress z plikami specyficznymi dla środowiska
  • Zmienne środowiskowe z Dotenv
  • Autoloader dla wtyczek mu (użyj zwykłych wtyczek jako wtyczek mu)
  • Zwiększone bezpieczeństwo (oddzielny katalog główny i bezpieczne hasła z wp-password-bcrypt)

Możesz także sprawdzić ich repozytorium GitHub w celu uzyskania bardziej szczegółowego użycia:

Carl Alberto
źródło
0

Nie, zmiana nazwy folderu wp-admin nie jest możliwa przy użyciu kodu lub hakera,

W przeszłości robiłem to samo dla klienta, wykonując pełne wyszukiwanie folderów za pomocą Cody (edytora, którego używam) dla tagu „wp-admin, wp-content ... itd.” I usunąłem „wp-” z akta.

Następnie będziesz mógł go zainstalować, ale:
Musisz zrobić to samo z wtyczkami, które chcesz zainstalować, Musisz ręcznie zaktualizować rdzeń, usuwając tag „wp-” z nowych wersji.

Na wszystkie sposoby nie sugeruję, abyś zrobił coś takiego, pozostaw to tak, jak jest i spróbuj wdrożyć stronę logowania / rejestracji / profilu użytkownika, aby zapewnić użytkownikom / klientom lepsze wrażenia.

Cristian z Cozmolabs napisał bardzo dobry tutorial. Możesz trochę edytować kod i ustawić go w dowolnym motywie WordPress.

Możesz także dodać formularz posta z interfejsu, aby administrator i użytkownicy z możliwością napisania postu mogli to zrobić z interfejsu.

Tutaj możesz zobaczyć przykład i kod, jak utworzyć stronę Frontend Post. Przedłożenie postu

Możesz także poszukać tutaj fajnych wtyczek, które robią to samo z większą funkcjonalnością.

Philip
źródło
0

CO Z PRACĄ WP-ADMIN Z IFRAME?

Utwórz nową stronę na pulpicie nawigacyjnym wp o nazwie „Administrator”. np .: twojadomena / admin /

Możesz złożyć oświadczenie o sprawie za pomocą header.php page.phpi / lub, footer.phpaby wyłączyć niepotrzebne elementy w szablonie, używając:

<?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;

To nie jest ładne, ale przynajmniej do pewnego stopnia możesz ukryć wp-admin przed adresem URL. Innym sposobem jest użycie przekazywania domen z włączonym adresem URL maski.

samjco
źródło