Posso renomear a pasta wp-admin?

70

É possível renomear a pasta wp-admin?

Eu sei que poderia renomeá-lo, mas, a menos que seja suportado pelo código, muitas coisas iriam quebrar.

Se eu usar um nome de pasta personalizado, ele ficará um pouco mais seguro, segurança por obscuridade e tudo mais.

Adam Dempsey
fonte

Respostas:

39

Infelizmente, atualmente não é possível nem parece haver uma vontade de considerá-lo uma modificação, como você pode ver neste tópico recente na lista wp-hackers e este ticket no trac .

Se você realmente deseja que isso seja revisitado, sugiro:

  1. Apresente seu caso aos wp-hackers, mas esteja avisado de que é melhor que seja bom e não "segurança através da obscuridade", ou será derrubado como acima.

  2. Apresente seu argumento em um bilhete trac com as mesmas ressalvas.

  3. Melhor ainda, faça o upload de um patch para o trac que permita a funcionalidade desejada. É muito mais difícil dizer não quando o trabalho já foi feito (mas é claro, eles preferem dizer "não" com muito mais frequência do que dizem "sim", portanto, seja avisado.)

MikeSchinkel
fonte
10
+1 eles têm uma preferência para dizer "não" muito mais frequentemente do que eles dizem "sim", então prevenido :)
Sisir
11

Não, você não pode renomear a pasta. O caminho é codificado em vários locais na fonte do WordPress.

Segurança através da obscuridade não é realmente segurança de qualquer maneira.

Viper007Bond
fonte
21
E é uma desculpa preguiçosa, na melhor das hipóteses, para não alterar práticas ruins de programação, como codificação de números mágicos ou seqüências de caracteres.
hakre
6
@hakre +100 Btw, a maioria das pessoas que pergunta como ocultar pastas "wp- *" não está necessariamente procurando por segurança; na verdade, está procurando obscuridade .. elas tentam tornar a análise de seus sites uma atividade que exige mais esforço.
Victor Farazdagi
3
Na verdade, não é segurança pela obscuridade. É URL obscuro, uma técnica de segurança válida. Veja a resposta abaixo para obter detalhes.
Cmc #
11
Bem, tentei seguir com um novo conjunto de argumentos, mas a resposta foi: "Este é um forte wontfix no livro" e o bastante arrogante "o login do Gmail também não é um URL obscuro". Sem razões técnicas, sem explicação, sem debate, eles simplesmente não o fazem.
precisa
11
Wordpress é muito mais venerável que o Gmail. Um dos motivos é que o wordpress é de código aberto. Todo mundo sabe código. Segurança através da obscuridade não é realmente segurança, afinal? Mas não somos programadores de wordpress. É de código aberto. Na minha opinião, a obscuridade ajuda a tornar segura. Por que as pessoas usam senha criptografada então? De acordo com essa lógica, não há uso de senha criptografada .... Porque se o banco de dados estiver visível, o hacker pode fazer qualquer coisa ... Meu wordpress é hackeado 2 vezes e 2 vezes o wordpress da minha empresa em 10. anos ... E nenhum dos meus 6-7 contas do Gmail é cortado em 15 anos até agora ...
web2students.com
11

As pessoas continuam fazendo essa pergunta, mas as marcam como duplicada. A resposta escolhida para isso, no entanto, realmente não é uma resposta para a pergunta.

Para renomear o administrador do wordpress, você precisa executar duas etapas.

No código a seguir, estou usando o painel como o nome do meu novo wp-admin. Altere o painel no código abaixo para o nome que você deseja nomear como novo administrador.

Primeiro você precisa dizer ao wordpress que deseja alterar o URL do administrador.

Na linha 2558, wp-includes / link-template.php é o código que prejudica o URL do administrador.

Usando o admin_urlfiltro, você pode alterar com êxito o URL do administrador com a seguinte função:

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

Você pode testar para ver qual é o seu novo URL, fazendo o seguinte:

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

No entanto, se você clicar no administrador, nem tudo funciona e alguns dos links podem indicar 404 não encontrado ou algo semelhante.

Segundo, altere o .htaccess no diretório raiz do wordpress e adicione o seguinte no início antes de qualquer outra coisa.

#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

Agora, eu não sou especialista em edição de .htaccess, portanto, isso pode não ser necessário. No entanto, nunca achei que não funcionasse.

Aqui está a coisa toda. Crie um arquivo e solte na pasta plugins ou na pasta mu-plugins. (lembre-se de alterar todas as instâncias do painel para o seu URL de administrador preferido)

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

Problemas?

Eu não tenho nenhum há mais de um ano usando esse método. Você pode notar que o wp-admin ainda funcionará com esse tipo de coisa, mas é mais uma precaução do que qualquer coisa. Eu tinha alguns plugins mal escritos que codificaram o wp-admin em alguns lugares que não carregavam ao tentar bloquear ou redirecionar o wp-admin. Tenho certeza de que existe uma maneira de fazer isso com o htaccess, mas ainda não o descobri. Além disso, isso não foi testado em vários sites ou algo parecido.

Atualização: Abordagem Alternativa

Isso é bem parecido, mas por algum motivo minha resposta acima não funcionou em todos os hosts que tentei.

adicionar à .htaccess

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

Crie um arquivo na pasta mu-plugins chamado new-admin.phpe adicione-o lá:

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

Nota: Essa abordagem parecia funcionar melhor em alguns hosts, mas ainda havia o problema de não redirecionar os links wp-admin para o novo URL do administrador. Aqui está uma abordagem que tentei abaixo. Embora isso abaixo não funcione , acho que está no caminho certo. Não tenho muita certeza de qual gancho usar. O htaccess pode ser uma alternativa melhor, mas eu continuava recebendo loops de redirecionamento quando tentava dessa maneira.

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
fonte
Há uma abordagem semelhante escrito em uma classe aqui: wordpress.stackexchange.com/a/7832/76440
majick
Que bom que você apontou essa resposta para @makick! É uma ótima resposta e foi, de fato, de onde obtive algumas idéias, mas não pareceu funcionar para mim em muitos casos, onde as minhas alterações entraram em jogo. A única coisa que ainda estou tentando descobrir é como redirecionar todos os links wp-admin digitados manualmente no URL. Eu não consigo entender isso. Se você tiver uma chance, tente minha resposta de atualização na parte inferior usando o site_urlfiltro em vez de admin_url. Isso parece funcionar muito bem.
Bryan Willis
9

Uma abordagem oficialmente suportada pelo WordPress é mover os arquivos de instalação do WordPress para um subdiretório, mantendo o site na raiz, da seguinte maneira:

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

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

Embora isso não lhe dê total liberdade para alterar seu URL de administrador, significa que você pode prefixá- lo com o que quiser. Isso é tão bom do ponto de vista da segurança. Ele também tem o benefício de mover todos os arquivos de instalação do WordPress para um local desconhecido para os usuários, por isso deve fazer parte de qualquer estratégia de fortalecimento do wordpress.

No Codex WordPress: Dando ao WordPress seu próprio diretório

Além disso, observe que, embora esse esquema de segurança seja chamado URL obscuro , não é a mesma coisa que segurança por obscuridade . O URL obscuro é um esquema de segurança perfeitamente válido que é tão bom quanto uma senha, enquanto a segurança por obscuridade depende do uso de procedimentos secretos não comprovados.

As mesmas advertências se aplicam, porém, às senhas: chame a pasta personalizada de algo como 7nxnkkugrdzm, não happy-snappy-admin. Além disso, verifique se os usuários estão cientes de que o URL do administrador é um segredo.

cmc
fonte
7

Na verdade, há um tutorial muito bom sobre isso aqui:

Como ocultar informações do WordPress do seu espelho do código-fonte

Inclui como renomear wp-content, renomear wp-admin e remover a tag do gerador do WordPress.

Este tutorial alterará evidências ou indicações óbvias no código-fonte, removendo efetivamente as informações do WordPress do seu site .

Ele explica como alterar o nome da pasta, o URL de login do wp-admin e verifique se o login.php é redirecionado para o site principal, para que as pessoas possam acessá-lo diretamente.

Graeme
fonte
6

Se você deseja impedir que os usuários no nível do assinante vejam o diretório wp-admin, é possível criar versões independentes das páginas de logon / registro e perfil / edição em seus próprios diretórios. Em seguida, você pode proteger sua pasta de administrador via htaccess ou restrição de IP. (Embora se você fizer isso, faça uma exceção para o arquivo admin-ajax, pois alguns plug-ins o utilizam para adicionar, um, funcionalidade AJAX).

Essa abordagem fornece a "obscuridade" desejada (o que realmente não faz muito, mas geralmente faz com que clientes e gerentes se sintam melhor) e também adiciona alguma segurança real ao limitar o acesso ao administrador. Além disso, honestamente, uma URL que diz "/ login" parece muito melhor do que "wp-login.php".

Não é preciso dizer que isso não torna seu site à prova de balas. Mas é um aprimoramento básico agradável.

MathSmath
fonte
2

Uma maneira de bloquear o painel de controle administrativo é utilizar as regras .htaccess. Basta adicionar um arquivo .htaccess à raiz do diretório wp-admin. Depois de adicionar este arquivo, basta adicionar a regra a seguir para negar todos os endereços IP e permitir apenas o seu 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
fonte
1

Se você deseja renomear o wp-admin com o objetivo de adicionar uma camada adicional de segurança à sua instalação do WordPress, você também pode experimentar o Bootsplate do WordPress Roots / Bedrock . Pode ajudar a isolar a raiz da web para limitar o acesso a arquivos não-web. Ele também pode ajudar na organização / proteção de todo o núcleo do WordPress, colocando-o em seu próprio subdiretório, como renomear wp-content / to app /, além desses recursos adicionais:

  • Gerenciamento de dependência com o Composer
  • Fácil configuração do WordPress com arquivos específicos do ambiente
  • Variáveis ​​de ambiente com Dotenv
  • Carregador automático para mu-plugins (use plugins regulares como mu-plugins)
  • Segurança aprimorada (raiz da web separada e senhas seguras com wp-password-bcrypt)

Você também pode verificar o repositório GitHub para um uso mais detalhado:

Carl Alberto
fonte
0

Não, não é possível renomear a pasta wp-admin com nenhum código ou hack do htaccess,

No passado, eu fazia o mesmo para um cliente executando uma pesquisa completa de pastas via Coda (o editor que eu uso) para a tag "wp-admin, wp-content ... etc" e removo o "wp-" do diretório arquivos.

Depois disso, você poderá instalá-lo, mas:
Você precisará fazer o mesmo com os plug-ins que deseja instalar. Você precisará atualizar o núcleo manualmente, limpando a tag "wp-" das novas versões.

De todas as maneiras, não sugiro que você faça algo assim, deixe-o como está e tente implementar uma página de Login / Registro / Perfil do usuário para proporcionar a seus usuários / clientes uma melhor experiência.

Cristian de Cozmolabs escreveu um ótimo tutorial. Você pode editar um pouco o código e executá-lo em qualquer tema do WordPress.

Você também pode adicionar um formulário de postagem no frontend para que o administrador e os usuários com recursos para escrever um post possam fazê-lo no frontend.

Aqui você pode ver um exemplo e código sobre como criar uma página de postagem de front-end. Envio de postagem de front-end

Além disso, você pode dar uma olhada em alguns plugins legais aqui que fazem o mesmo com mais funcionalidade.

Philip
fonte
0

E SOBRE O TRABALHO WP-ADMIN A PARTIR DE UM IFRAME?

Crie uma nova página no painel do wp chamada "Admin". por exemplo: seudominio / admin /

Você pode fazer uma declaração de caso com header.php page.phpe / ou footer.phpdesativar itens desnecessários no modelo, usando:

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

Isso não é bonito, mas pelo menos até certo ponto você pode ocultar o wp-admin do url. Outra maneira é possivelmente usar o encaminhamento de domínio com o URL da máscara ativado.

samjco
fonte