Kann ich den Ordner wp-admin umbenennen?

70

Kann man den Ordner wp-admin umbenennen?

Ich weiß, ich könnte es einfach umbenennen, aber wenn es nicht vom Code unterstützt wird, würde vieles kaputt gehen.

Wenn ich einen benutzerdefinierten Ordnernamen verwende, wird dieser etwas sicherer, die Sicherheit durch Unbekanntheit und so weiter.

Adam Dempsey
quelle

Antworten:

39

Leider ist es derzeit nicht möglich und es scheint auch nicht möglich zu sein, dies als Modifikation zu betrachten, wie Sie an diesem aktuellen Thread auf der Liste der wp-Hacker und an diesem Ticket auf trac sehen können .

Wenn Sie wirklich möchten, dass dies noch einmal besucht wird, würde ich vorschlagen:

  1. Präsentieren Sie Ihren Fall auf wp-Hackern, aber seien Sie gewarnt, dass Ihr Anwendungsfall besser ist und nicht "Sicherheit durch Unbekanntheit", da er sonst wie oben beschrieben abgeschossen wird.

  2. Präsentieren Sie Ihre Argumentation in einem Trac-Ticket mit den gleichen Einschränkungen.

  3. Laden Sie noch besser einen Patch auf trac hoch, der Ihre gewünschten Funktionen aktiviert. Es ist viel schwieriger, Nein zu sagen, wenn die Arbeit bereits erledigt ist (aber natürlich sagen sie viel häufiger "Nein" als "Ja", seien Sie also gewarnt.)

MikeSchinkel
quelle
10
+1 Sie sagen viel häufiger "Nein" als "Ja", seien Sie also gewarnt :)
Sisir
11

Nein, Sie können den Ordner nicht umbenennen. Der Pfad ist an mehreren Stellen in der gesamten WordPress-Quelle fest programmiert.

Sicherheit durch Dunkelheit ist sowieso keine wirkliche Sicherheit.

Viper007Bond
quelle
21
Und es ist bestenfalls eine faule Ausrede, schlechte Programmierpraktiken wie das Festcodieren von magischen Zahlen oder Zeichenfolgen nicht zu ändern.
Hakre
6
@hakre +100 Übrigens, die meisten Leute, die nach dem Ausblenden von "wp- *" - Ordnern fragen, suchen nicht unbedingt nach Sicherheit, sondern nach Unklarheiten. Sie versuchen, die Analyse ihrer Websites aufwändiger zu gestalten.
Victor Farazdagi
3
Tatsächlich ist es keine Sicherheit durch Unbekanntheit. Es ist Obscure URL, eine gültige Sicherheitstechnik. Siehe Antwort unten für Details.
cmc
1
Nun, ich habe versucht, neue Argumente zu finden, aber die Antwort lautete: "Dies ist ein starker Wontfix in Buchform" und die ziemlich patzige "die Google Mail-Anmeldung ist auch keine obskure URL". Keine technischen Gründe, keine Erklärung, keine Debatte, sie werden es einfach nicht tun.
cmc
1
Wordpress ist weitaus ehrwürdiger als Google Mail. Ein Grund ist, dass WordPress Open Source ist. Jeder kennt Code. Sicherheit durch Dunkelheit ist nicht wirklich Sicherheit? Aber wir sind kein Coder von WordPress. Es ist Open Source. Meiner Meinung nach hilft Unbekanntheit dabei, Sicherheit zu schaffen. Warum werden dann verschlüsselte Passwörter verwendet? Nach dieser Logik wird kein verschlüsseltes Passwort verwendet. Wenn die Datenbank sichtbar ist, kann der Hacker alles ... Mein WordPress wird 2-mal und das 2-fache des WordPress meines Unternehmens in 10 gehackt Jahre ... Und keiner meiner 6-7 Google Mail-Konten wurde in den letzten 15 Jahren gehackt ...
web2students.com
11

Die Leute stellen diese Frage immer wieder, aber die Leute markieren sie immer wieder als Duplikat. Die gewählte Antwort darauf ist jedoch keine Antwort auf die Frage.

Um den WordPress-Administrator umzubenennen, müssen Sie zwei Schritte ausführen.

Im folgenden Code verwende ich Dashboard als Namen meines neuen WP-Administrators. Ändern Sie das Dashboard im folgenden Code in einen beliebigen Namen für Ihren neuen Administrator.

Zuerst müssen Sie WordPress mitteilen, dass Sie die Admin-URL ändern möchten.

In Zeile 2558 ist wp-includes / link-template.php der Code, der die Admin-URL bestimmt.

Mit dem admin_urlFilter können Sie die URL des Administrators mit der folgenden Funktion erfolgreich ändern:

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

Sie können testen, wie Ihre neue URL lautet:

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

Wenn Sie jedoch beim Klicken durch den Administrator feststellen, dass nicht alles funktioniert und einige der Links möglicherweise dazu führen, dass Sie 404 nicht gefunden haben oder etwas Ähnliches.

Zweitens ändern Sie die .htaccess-Datei in Ihrem WordPress-Stammverzeichnis und fügen Sie am Anfang vor allem anderen Folgendes hinzu.

#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

Jetzt bin ich kein Experte, wenn es um das Bearbeiten von .htaccess geht, daher ist ein Teil davon möglicherweise nicht erforderlich. Ich habe jedoch nie festgestellt, dass es nicht funktioniert.

Hier ist das Ganze. Erstellen Sie eine Datei und legen Sie sie in Ihrem Plugins-Ordner oder Mu-Plugins-Ordner ab. (Denken Sie daran, jede Instanz des Dashboards in Ihre bevorzugte Administrator-URL zu ändern.)

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

Probleme?

Ich hatte seit über einem Jahr keine mehr mit dieser Methode. Sie werden vielleicht bemerken, dass wp-admin immer noch funktioniert, aber das ist mehr Vorsichtsmaßnahme als alles andere. Ich hatte einige schlecht geschriebene Plugins, die wp-admin an einigen Stellen fest codierten, die beim Versuch, wp-admin zu blockieren oder umzuleiten, nicht geladen wurden. Ich bin sicher, dass es einen Weg gibt, dies mit dem htaccess zu tun, aber ich habe es nicht erfolgreich herausgefunden. Auch dies wurde noch nie auf Multisite-Systemen oder Ähnlichem getestet.

Update: Alternativer Ansatz

Das ist ziemlich ähnlich, aber aus irgendeinem Grund hat meine obige Antwort nicht auf jedem Host funktioniert, den ich ausprobiert habe.

Hinzufügen .htaccess

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

Erstellen Sie eine Datei im Ordner mu-plugins new-admin.phpund fügen Sie diese dort hinzu:

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

Hinweis: Dieser Ansatz schien auf einigen Hosts besser zu funktionieren, hatte jedoch immer noch das Problem, dass wp-admin-Links nicht auf die neue Admin-URL umgeleitet wurden. Hier ist ein Ansatz, den ich unten ausprobiert habe. Obwohl dies unten nicht funktioniert, denke ich, dass es auf dem richtigen Weg ist. Ich bin mir nicht ganz sicher, welchen Haken ich verwenden soll. htaccess könnte eine bessere Alternative sein, aber ich bekam immer wieder Umleitungsschleifen, als ich das versuchte.

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
quelle
Es gibt einen ähnlichen Ansatz, der hier in eine Klasse geschrieben wurde: wordpress.stackexchange.com/a/7832/76440
majick
Ich bin froh, dass Sie @makick darauf hingewiesen haben! Es ist eine großartige Antwort und ich habe tatsächlich einige Ideen erhalten, aber es schien in vielen Fällen nicht für mich zu funktionieren, weshalb meine Änderungen ins Spiel kamen. Ich versuche immer noch herauszufinden, wie man alle wp-admin-Links umleitet, die manuell in die URL eingegeben werden. Ich kann das nicht herausfinden. Wenn Sie die Möglichkeit haben, probieren Sie meine Update-Antwort unten mit dem site_urlFilter aus admin_url. Es scheint ziemlich gut zu funktionieren.
Bryan Willis
9

Ein Ansatz, der offiziell von WordPress unterstützt wird, besteht darin, die WordPress-Installationsdateien in ein Unterverzeichnis zu verschieben und dabei die Site im Stammverzeichnis zu belassen.

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

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

Dies gibt Ihnen zwar nicht die vollständige Freiheit, Ihre Administrator-URL zu ändern, bedeutet jedoch, dass Sie ihr ein beliebiges Präfix voranstellen können. Dies ist aus sicherheitstechnischer Sicht genauso gut. Es hat auch den Vorteil, dass alle WordPress-Installationsdateien an einen Speicherort verschoben werden, der den Benutzern nicht bekannt ist. Daher sollte es Teil jeder WordPress-Hardening-Strategie sein.

Aus dem WordPress-Codex: WordPress ein eigenes Verzeichnis geben

Beachten Sie außerdem, dass dieses Sicherheitsschema zwar die Bezeichnung " Obscure URL" trägt , es jedoch nicht mit " Sicherheit durch Unbekanntheit" identisch ist . Obscure URL ist ein perfekt gültiges Sicherheitsschema, das genau so gut ist wie ein Passwort, während Sicherheit durch Unbekanntheit auf der Verwendung geheimer, unbewiesener Verfahren beruht.

Es gelten jedoch die gleichen Vorsichtsmaßnahmen wie bei Kennwörtern: Rufen Sie den benutzerdefinierten Ordner in etwa auf 7nxnkkugrdzm, nicht happy-snappy-admin. Stellen Sie außerdem sicher, dass Ihre Benutzer wissen, dass die Administrator-URL ein Geheimnis ist.

cmc
quelle
7

Es gibt tatsächlich ein sehr gutes Tutorial dazu hier:

So verstecken Sie WordPress-Informationen vor Ihrem Quellcode- Spiegel

Enthält Anweisungen zum Umbenennen von WP-Inhalten, zum Umbenennen von WP-Admin und zum Entfernen des Generator-Tags aus WordPress.

Dieses Tutorial ändert offensichtliche Beweise oder Hinweise darauf in Ihrem Quellcode und entfernt effektiv WordPress-Informationen von Ihrer Site .

Hier erfahren Sie, wie Sie den Ordnernamen und die Anmelde-URL von wp-admin ändern und sicherstellen, dass login.php zur Hauptseite umleitet, damit die Benutzer direkt dorthin gelangen.

Graeme
quelle
6

Wenn Sie verhindern möchten, dass Benutzer auf Abonnentenebene das Verzeichnis wp-admin sehen, können Sie eigenständige Versionen der Anmelde- / Registrierungs- und Profil- / Bearbeitungsseiten in ihren eigenen Verzeichnissen erstellen. Anschließend können Sie Ihren Administratorordner über htaccess oder eine IP-Beschränkung schützen. (Wenn Sie dies tun, sollten Sie eine Ausnahme für die admin-ajax-Datei machen, da einige Plugins sie verwenden, um AJAX-Funktionen hinzuzufügen.)

Dieser Ansatz gibt Ihnen die gewünschte "Unbekanntheit" (was nicht wirklich viel bewirkt, aber Kunden und Managern oft das Gefühl gibt, sich besser zu fühlen) und bietet echte Sicherheit, indem der Zugriff auf den Administrator eingeschränkt wird. Außerdem sieht eine URL, die nur "/ login" sagt, viel besser aus als "wp-login.php".

Es versteht sich von selbst, dass Ihre Website dadurch nicht kugelsicher wird. Aber es ist eine schöne, grundlegende Verbesserung.

MathSmath
quelle
2

Eine Möglichkeit zum Sperren des Verwaltungssteuerungsfelds besteht in der Verwendung von .htaccess-Regeln. Fügen Sie einfach eine .htaccess-Datei zum Stammverzeichnis des Verzeichnisses wp-admin hinzu. Nachdem Sie diese Datei hinzugefügt haben, fügen Sie einfach die folgende Regel hinzu, um alle IP-Adressen zu verweigern und nur Ihre IP-Adresse zuzulassen:

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
quelle
1

Wenn Sie den wp-admin umbenennen möchten, um Ihrer WordPress-Installation eine zusätzliche Sicherheitsebene hinzuzufügen, können Sie auch Roots / Bedrock WordPress Boilerplate ausprobieren . Es kann dabei helfen, das Webstammverzeichnis zu isolieren, um den Zugriff auf Nicht-Webdateien zu beschränken. Es kann auch beim Organisieren / Sichern des gesamten WordPress-Kerns helfen, indem es in ein eigenes Unterverzeichnis wie das Umbenennen von wp-content / in app / sowie in die folgenden zusätzlichen Funktionen gestellt wird:

  • Abhängigkeitsmanagement mit Composer
  • Einfache WordPress-Konfiguration mit umgebungsspezifischen Dateien
  • Umgebungsvariablen mit Dotenv
  • Autoloader für mu-Plugins (normale Plugins als mu-Plugins verwenden)
  • Erhöhte Sicherheit (getrennte Web-Root- und sichere Passwörter mit wp-password-bcrypt)

Sie können auch deren GitHub Repo für eine detailliertere Verwendung überprüfen :

Carl Alberto
quelle
0

Schauen Sie sich http://wordpress.org/extend/plugins/stealth-login/ an, dies kann Ihnen helfen.

Edelwasser
quelle
Ich hatte Probleme mit diesem Plugin, als ich es ausprobierte. Und es scheint derzeit nicht gepflegt oder kompatibel mit WP 3.x
Rarst
ah ... schade, habe es nicht überprüft, ich habe es vor einiger Zeit deinstalliert. Aber hey ... vielleicht kann es jemand reparieren, wenn es wirklich nötig ist.
Edelwasser
Als Alternative finden Sie unter wordpress.stackexchange.com/questions/4037/…
Hakre
0

Nein, es ist nicht möglich, den Ordner "wp-admin" umzubenennen, wenn der Code oder der Hack "htaccess" fehlt.

In der Vergangenheit habe ich das gleiche für einen Client getan, indem ich eine vollständige Ordnersuche über Coda (den von mir verwendeten Editor) nach dem Tag "wp-admin, wp-content ... etc" durchgeführt habe und das "wp-" von der entfernt habe Dateien.

Danach können Sie es installieren, aber:
Sie müssen dasselbe mit den Plugins tun, die Sie installieren möchten. Sie müssen den Core manuell aktualisieren, indem Sie das "wp-" Tag aus den neuen Versionen entfernen.

Auf alle Fälle empfehle ich Ihnen, so etwas nicht zu tun, belassen Sie es wie es ist und versuchen Sie, eine Benutzer-Login / Register / Profil-Seite zu implementieren, um Ihren Benutzern / Kunden ein besseres Erlebnis zu bieten.

Cristian aus Cozmolabs hat ein sehr gutes Tutorial geschrieben. Sie können den Code ein wenig bearbeiten und ihn in einem beliebigen WordPress-Design ausführen lassen.

Sie können auch ein Post-Formular über das Frontend hinzufügen, damit der Administrator und Benutzer mit den Funktionen zum Schreiben eines Posts dies über das Frontend tun können.

Hier sehen Sie ein Beispiel und einen Code zum Erstellen einer Frontend-Post-Seite. Front-End-Post-Einreichung

Sie können hier auch nach einigen netten Plugins suchen , die dasselbe mit mehr Funktionalität tun.

Philip
quelle
0

WAS IST MIT DER ARBEIT VON WP-ADMIN AUS EINEM IFRAME?

Erstellen Sie im WP-Dashboard eine neue Seite mit dem Namen "Admin". zB: IhreDomain / admin /

Sie können eine case-Anweisung mit header.php page.phpund / oder footer.phpzum Deaktivieren nicht benötigter Elemente in der Vorlage abgeben, indem Sie Folgendes verwenden:

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

Das ist nicht schön, aber zumindest in gewissem Maße können Sie wp-admin vor url verstecken. Eine andere Möglichkeit besteht darin, möglicherweise die Domänenweiterleitung mit aktivierter Masken-URL zu verwenden.

samjco
quelle