Puis-je renommer le dossier wp-admin?

70

Est-il possible de renommer le dossier wp-admin?

Je sais que je pourrais simplement le renommer, mais à moins que cela ne soit pris en charge par le code, beaucoup de choses se briseraient.

Si j'utilise un nom de dossier personnalisé, cela le rendra un peu plus sécurisé, sécurité par obscurité et tout ça.

Adam Dempsey
la source

Réponses:

39

Malheureusement, ce n'est pas possible actuellement et il ne semble pas y avoir de volonté de le considérer comme une modification, comme vous pouvez le constater par ce fil de discussion récent sur la liste de wp-hackers et ce ticket sur trac .

Si vous souhaitez vraiment que cela soit revisité, je vous suggère:

  1. Présentez votre cas sur wp-hackers mais soyez prévenu que votre cas d'utilisation vaut mieux être bon et non pas "sécurité par l'obscurité" ou il sera abattu comme ci-dessus.

  2. Présentez votre argumentation dans un ticket de transport avec les mêmes mises en garde.

  3. Encore mieux, téléchargez un correctif sur trac qui active les fonctionnalités souhaitées. Il est beaucoup plus difficile de dire non quand le travail est déjà fait (mais bien sûr, ils préfèrent dire "non" beaucoup plus souvent qu'ils ne disent "oui", alors soyez prévenus).

Mike Schinkel
la source
10
+1 ils préfèrent dire "non" plus souvent qu'ils ne disent "oui", alors soyez prévenus :)
Sam
11

Non, vous ne pouvez pas renommer le dossier. Le chemin est codé en dur à plusieurs endroits dans la source de WordPress.

De toute façon, la sécurité par l'obscurité n'est pas vraiment une sécurité.

Viper007Bond
la source
21
Et c'est au mieux une excuse paresseuse pour ne pas changer de mauvaises pratiques de programmation telles que coder en dur des nombres ou des chaînes magiques.
hakre
6
@hakre +100 Btw, la plupart des gens qui demandent comment masquer les dossiers "wp- *" ne recherchent pas nécessairement la sécurité, mais recherchent l'obscurité ... ils essaient de rendre l'analyse de leurs sites plus exigeante en efforts.
Victor Farazdagi
3
En réalité, ce n'est pas la sécurité par l'obscurité. C'est une URL obscure, une technique de sécurité valide. Voir la réponse ci-dessous pour plus de détails.
cmc
1
Eh bien, j’ai essayé de poursuivre avec une nouvelle série d’arguments, mais la réponse a été: "C’est un très bon wontfix par livre" et le plutôt arrogant "le login gmail n’est pas non plus obscur". Aucune raison technique, aucune explication, aucun débat, ils ne le feront tout simplement pas.
cmc
1
Wordpress est beaucoup plus vénérable que Gmail. Une des raisons est, wordpress est open-source. Tout le monde connaît le code. La sécurité par l'obscurité n'est-elle pas vraiment une sécurité? Mais nous ne sommes pas codeur de wordpress. C'est open-source. À mon avis, l’obscurité contribue à la sécurité. Pourquoi les gens utilisent-ils alors un mot de passe crypté? Selon cette logique, le mot de passe de cryptage n'est pas utilisé .... Parce que si la base de données est visible, le pirate peut tout faire ... Mon wordpress est piraté 2 fois et 2 fois le wordpress de mon entreprise sur 10 ans ... Et aucun de mes 6-7 comptes gmail n'est piraté depuis 15 ans ...
web2students.com
11

Les gens continuent à poser cette question, mais ils continuent à le marquer comme un doublon. La réponse choisie pour cela, cependant, n’est pas vraiment une réponse à la question.

Pour renommer l’administrateur wordpress, vous devez suivre deux étapes.

Dans le code suivant, j'utilise tableau de bord comme nom de mon nouvel administrateur. Dans le code ci-dessous, modifiez le tableau de bord en indiquant le nom de votre nouvel administrateur.

D'abord, vous devez dire à wordpress que vous souhaitez modifier l'URL de l'administrateur.

Sur la ligne 2558, wp-includes / link-template.php est le code qui détermine l’URL de l’administrateur.

En utilisant le admin_urlfiltre, vous pouvez modifier avec succès l'URL de l'administrateur avec la fonction suivante:

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

Vous pouvez tester pour voir quelle est votre nouvelle URL en faisant ceci:

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

Cependant, si vous remarquez en cliquant sur l’administrateur que tout ne fonctionne pas et que certains des liens peuvent vous donner 404 non trouvés ou quelque chose de similaire.

Deuxièmement, changez le fichier .htaccess dans votre répertoire racine wordpress et ajoutez ce qui suit au début, avant toute chose.

#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

À présent, je ne suis pas un expert en matière de modification de .htaccess, de sorte que certaines de ces choses pourraient ne pas être nécessaires. Cependant, je n'ai jamais trouvé que cela ne fonctionnait pas.

Voici le tout. Créez un fichier et déposez-le dans votre dossier plugins ou mu-plugins. (n'oubliez pas de changer chaque instance du tableau de bord en votre URL d'administrateur préférée)

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

Problèmes?

Je n’en ai pas eu depuis plus d’un an avec cette méthode. Vous remarquerez peut-être que wp-admin fonctionnera toujours quel genre de merde, mais c'est plus une précaution que tout. J'avais des plugins mal écrits qui wp-admin codés en dur à certains endroits et qui ne se chargeaient pas en essayant de bloquer ou de rediriger wp-admin. Je suis sûr qu'il y a un moyen de faire cela avec htaccess, mais je ne l'ai pas compris avec succès. En outre, cela n'a pas été testé sur multisite ou quoi que ce soit du genre.

Mise à jour: approche alternative

C'est assez similaire, mais pour une raison quelconque, ma réponse ci-dessus n'a pas fonctionné sur tous les hôtes que j'ai essayés.

Ajouter à .htaccess

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

Créez un fichier dans le dossier mu-plugins appelé new-admin.phpet ajoutez-le ici:

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

Remarque: cette approche semblait mieux fonctionner sur certains hôtes, mais le problème était de ne pas rediriger les liens wp-admin vers la nouvelle URL d'administrateur. Voici une approche que j'ai essayée ci-dessous. Bien que cela ne fonctionne pas ci-dessous, je pense que c'est sur la bonne voie. Je ne sais pas trop quel crochet utiliser. htaccess pourrait être une meilleure alternative, mais je continuais à avoir des boucles de redirection lorsque j'essayais de cette façon.

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
la source
Une approche similaire est écrite dans une classe ici: wordpress.stackexchange.com/a/7832/76440
majick
Heureux que vous ayez souligné cette réponse @makick! C’est une excellente réponse et c’est bien là où j’ai eu quelques idées, mais cela ne semble pas fonctionner pour moi dans beaucoup de cas et c’est là que mes changements sont entrés en jeu. La seule chose que j'essaie encore de comprendre est de savoir comment rediriger tous les liens wp-admin saisis manuellement dans l'URL. Je n'arrive pas à comprendre cela. Si vous en avez l'occasion, essayez ma réponse de mise à jour vers le bas en utilisant le site_urlfiltre au lieu de admin_url. Cela semble bien fonctionner.
Bryan Willis
9

Une approche officiellement prise en charge par WordPress consiste à déplacer les fichiers d'installation de WordPress dans un sous-répertoire, tout en conservant le site à la racine, comme suit:

URL du site: http://my-blog.com

URL de l'administrateur: http://my-blog.com/7nxnkkugrdzm/wp-admin

Bien que cela ne vous donne pas une totale liberté pour changer votre URL d'administrateur, cela signifie que vous pouvez le préfixer avec tout ce que vous voulez. C'est tout aussi bien du point de vue de la sécurité. Il présente également l'avantage de déplacer tous les fichiers d'installation de WordPress vers un emplacement inconnu des utilisateurs. Il devrait donc faire partie de toute stratégie de renforcement de Wordpress.

Du codex WordPress: Donner à WordPress son propre répertoire

Notez également que bien que ce schéma de sécurité s'appelle Obscure URL , ce n'est pas la même chose que sécurité par obscurité . Obscure URL est un schéma de sécurité parfaitement valable qui vaut autant qu'un mot de passe, tandis que la sécurité par obscurité repose sur l'utilisation de procédures secrètes non prouvées.

Les mêmes mises en garde que pour les mots de passe s'appliquent toutefois: Appelez le dossier personnalisé de la même manière 7nxnkkugrdzm, pas happy-snappy-admin. Assurez-vous également que vos utilisateurs sont conscients que l'URL de l'administrateur est un secret.

cmc
la source
7

Il y a en fait un très bon tutoriel à ce sujet ici:

Comment masquer les informations WordPress à partir de votre miroir de code source

Comprend comment renommer wp-content, renommer wp-admin et supprimer la balise générateur de WordPress.

Ce didacticiel modifiera les preuves évidentes ou les indications de celui-ci dans votre code source, en supprimant efficacement les informations WordPress de votre site .

Il explique comment changer le nom du dossier, l’URL de connexion wp-admin et s’assurer que le fichier login.php est redirigé vers le site principal afin que les utilisateurs puissent y accéder directement.

Graeme
la source
6

Si vous souhaitez empêcher les utilisateurs de niveau abonné de voir le répertoire wp-admin, vous pouvez créer des versions autonomes des pages de connexion / enregistrement et de profil / modification dans leurs propres répertoires. Ensuite, vous pouvez protéger votre dossier d’administrateur via htaccess ou une restriction IP. (Mais si vous faites cela, vous devriez faire une exception pour le fichier admin-ajax, car certains plugins l'utilisent pour ajouter, euh, des fonctionnalités AJAX).

Cette approche vous donne "l'obscurité" souhaitée (ce qui ne fait pas grand chose, mais aide souvent les clients et les gestionnaires à se sentir mieux), et ajoute une sécurité réelle en limitant l'accès à l'administrateur. De plus, honnêtement, une URL qui dit simplement "/ login" est bien plus jolie que "wp-login.php".

Il va sans dire que cela ne rend pas votre site pare-balles. Mais c'est une belle amélioration de base.

MathSmath
la source
2

Un moyen de verrouiller le panneau de configuration administratif consiste à utiliser les règles .htaccess. Ajoutez simplement un fichier .htaccess à la racine du répertoire wp-admin. Après avoir ajouté ce fichier, ajoutez simplement la règle suivante pour refuser toutes les adresses IP et autoriser uniquement votre adresse 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
la source
1

Si vous souhaitez renommer wp-admin dans le but d'ajouter une couche de sécurité supplémentaire à votre installation WordPress, vous pouvez également essayer le Boilerplate Roots / Bedrock WordPress . Cela peut aider à isoler la racine Web pour limiter l'accès aux fichiers non Web. Il peut également aider à organiser / sécuriser l'ensemble du noyau WordPress en le plaçant dans son propre sous-répertoire, comme renommer wp-content / to app /, ainsi que les fonctionnalités supplémentaires suivantes:

  • Gestion des dépendances avec Composer
  • Configuration facile de WordPress avec des fichiers spécifiques à l'environnement
  • Variables d'environnement avec Dotenv
  • Autoloader pour les plugins mu (utilisez les plugins habituels comme plugins mu)
  • Sécurité renforcée (racine Web séparée et mots de passe sécurisés avec wp-password-bcrypt)

Vous pouvez également consulter leur repo GitHub pour une utilisation plus détaillée:

Carl Alberto
la source
0

Jetez un coup d’œil sur http://wordpress.org/extend/plugins/stealth-login/ ceci peut vous aider.

Edelwater
la source
J'ai eu des problèmes avec ce plugin lorsque je l'ai essayé. Et cela ne semble pas être maintenu ni compatible avec WP 3.x
Rarst
ah… tant pis, je ne l'ai pas vérifié, je l'ai désinstallé il y a quelque temps. Mais bon… peut-être que quelqu'un peut le réparer s'il en a vraiment besoin.
Edelwater
comme une alternative, s'il vous plaît voir wordpress.stackexchange.com/questions/4037/…
hakre
0

Non, il n'est pas possible de renommer le dossier wp-admin avec un code trop court ou un hack htaccess,

Dans le passé, j’ai fait de même pour un client en effectuant une recherche complète dans le dossier via Coda (l’éditeur que j’utilise) pour la balise "wp-admin, wp-content ... etc" et j’ai supprimé le "wp-" de la des dossiers.

Après cela, vous pourrez l'installer mais:
Vous devez faire la même chose avec les plugins que vous souhaitez installer, Vous devez mettre à jour le noyau manuellement en effaçant la balise "wp-" des nouvelles versions.

De toutes les manières, je ne vous suggère pas de faire quelque chose comme ça, laissez-le tel quel et essayez d'implémenter une page de connexion / enregistrement / profil utilisateur pour offrir une meilleure expérience à vos utilisateurs / clients.

Cristian de Cozmolabs a écrit un très bon tutoriel. Vous pouvez éditer un peu le code et le faire fonctionner dans n’importe quel thème WordPress.

Vous pouvez également ajouter un formulaire de publication à partir de l'interface afin que l'administrateur et les utilisateurs dotés des fonctionnalités permettant de rédiger une publication puissent le faire à partir de l'interface.

Ici, vous pouvez voir un exemple et un code sur la façon de créer une page de publication frontale. Soumission post-frontale

Aussi, vous pouvez jeter un oeil à quelques bons plugins ici qui font la même chose avec plus de fonctionnalités.

Philippe
la source
0

QU'EN EST-IL DE TRAVAILLER WP-ADMIN À PARTIR D'UN IFRAME?

Créez une nouvelle page dans le tableau de bord wp appelée "Admin". par exemple: votredomaine / admin /

Vous pouvez faire une déclaration de cas avec header.php page.phpet et / ou footer.phpdésactiver des éléments inutiles du modèle, en utilisant:

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

Ce n'est pas joli, mais au moins dans une certaine mesure, vous pouvez cacher wp-admin de l'URL. Une autre solution consiste à utiliser éventuellement le transfert de domaine avec l’URL du masque activée.

samjco
la source