Passos a serem seguidos para ocultar o fato de um site estar usando o WordPress?

142

Eu tenho um site para o qual estamos tentando ser discretos sobre o fato de estarmos usando o WordPress. Que medidas podemos tomar para torná-lo menos óbvio?

EDIT - Nota importante de segurança:

Por favor, entenda que fazer isso perfeitamente é impossível de acordo com a resposta de Mark , portanto não confie nisto como medida de segurança.

Casebash
fonte
7
Por que você quer esconder que está usando o Wordpress?
Wadih M.
15
@Wadih: Porque me disseram para
Casebash 11/11/10
5
Isso é segurança pela obscuridade. Se eles realmente querem, alguém pode correlacionar o comportamento de gerações de páginas e provar que está sendo executado em um mecanismo wordpress.
Wadih M.
28
@ Wadih M. - "Segurança pela obscuridade" não é a única razão para isso. Um dos meus clientes quer o mesmo, mas o quer, porque quer vender seus serviços hospedados a clientes que recusariam pagar um dólar mais alto se pensassem "Caramba, eles estão apenas usando o WordPress". Portanto, é um jogo de marca / percepção, não de segurança, pelo menos para o meu cliente.
MikeSchinkel
2
Seis anos em tantos sites usam o WordPress, ninguém vai acreditar em você de qualquer maneira. ;-)
cjbj

Respostas:

128

As maiores ofertas do WordPress estão entre as <head> </head>tags.

Exemplo de saída de conteúdo principal do WordPress por The Twentyten Theme e como remover:

<link rel="profile" href="http://gmpg.org/xfn/11" /> 

Remova diretamente do header.php

 <link rel="stylesheet" type="text/css" media="all" href="http://example.com/wp-content/themes/twentyten/style.css" /> 

Oculte o WordPress chamando sua folha de estilo de outro local e altere o diretório wp-content. O WordPress exige que o seu tema inclua algumas informações básicas na parte superior do style.css (o style.css deve estar no diretório raiz dos temas). Você precisará criar um CSS alternativo e chamá-lo da sua cabeça. O WordPress não exige que você use os temas style.css, mas apenas que ele esteja no diretório de temas.

Remova diretamente do header.php

<link rel="alternate" type="application/rss+xml" title="Example Blog &raquo; Feed" href="http://example.com/feed/" /> 
<link rel="alternate" type="application/rss+xml" title="Example Blog &raquo; Comments Feed" href="http://example.com/comments/feed/" />    
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://example.com/xmlrpc.php?rsd" /> 
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://example.com/wp-includes/wlwmanifest.xml" /> 
<link rel='index' title='Example Blog' href='http://example.com/' /> 
<meta name="generator" content="WordPress 3.1-alpha" /> 

Para remover esses links extras, você pode adicionar um filtro ao functions.php

// remove junk from head
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);

Você pode alterar o diretório do plug-in e o diretório wp-content no arquivo wp-config.php, mas poderá ter alguns problemas se o seu tema ou qualquer plug-in não usar o método apropriado para chamar arquivos.

define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/new-wp-content' );

Defina WP_CONTENT_URL como o URI completo deste diretório (sem barra), por exemplo

define( 'WP_CONTENT_URL', 'http://example/new-wp-content');

Opcional Configure WP_PLUGIN_DIR para o caminho local completo deste diretório (sem barra), por exemplo

define( 'WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'] . '/new-wp-content/new-plugins' );

Defina WP_PLUGIN_URL como o URI completo deste diretório (sem barra), por exemplo

define( 'WP_PLUGIN_URL', 'http://example/new-wp-content/new-plugins');

PLUGINS

Esteja ciente de que alguns plug-ins como Akismat, SEO All in One, W3-Total-Cache, Super Cache e muitos outros adicionam comentários à saída HTML. A maioria é fácil de modificar para remover os comentários, mas suas alterações serão substituídas sempre que os plugins forem atualizados.

wp-inclui

O diretório wp-includes contém jquery e vários outros arquivos js que os temas ou plugins chamarão usando wp_enqueue_script (). Para mudar isso, você precisará cancelar o registro dos scripts padrão do WordPress e registrar o novo local. Adicione a functions.php:

function my_init() {
    if (!is_admin()) {
        // comment out the next two lines to load the local copy of jQuery
        wp_deregister_script('jquery');
        wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js', false, '1.3.2');
        wp_enqueue_script('jquery');
    }
}
add_action('init', 'my_init');

Isso precisará ser feito com cada script usado pelo seu tema ou plug-ins.

Chris_O
fonte
Chris_O : Ótima resposta! Você provavelmente também deve adicionar que, se eles usam plugins ou temas, muitos deles são facilmente identificados; ou seja, se alguém estiver usando o plug-in akismet ou o all-in-one-seo, ainda é uma oferta bastante morta por alguém que sabe o que procura.
MikeSchinkel 8/09/10
@MikeSchinkel True, mas ao mesmo tempo, o mesmo acontece com wp-includes e wp-admin; com a exceção de que você não pode alterar nenhum deles nem ocultá-los sem limitar a funcionalidade do site.
John P Bloch
@ John P Bloch: Definitivamente, no entanto, eu não teria dito , mas eu teria dito e . :)
MikeSchinkel
3
@MikeSchinkel : para wp-admin e wp-includes, você pode fazer algumas coisas através do controle de acesso apache, para tornar esses caminhos inexistentes para outros usuários, em seguida, para o administrador, por exemplo, levando a um padrão 404.
hakre
@ Chris_O: Checkout register_theme_directory(), acho ótimo ocultar o diretório do tema para fora do diretório "wp-content".
hakre 10/09/10
45

Um pouco que muitas vezes é esquecido - exclua readme.htmlna raiz do WordPress. Ele não apenas identifica a instalação como WP, mas também possui uma versão precisa. E não se esqueça de repetir as atualizações.

Pergunta relacionada: Impedir o acesso ou excluir automaticamente readme.html, license.txt, wp-config-sample.php

Rarst
fonte
5
Bom ponto - também, você pode usar o seu .htaccess para sempre negar o acesso ao readme.html, para que você não precise se preocupar em removê-lo novamente.
Tim
... também veja wordpress.stackexchange.com/a/201805/13561 #
58004 Frank Nocke
21

Eu sempre usei o método Roots Theme .
Mas aplicá-lo a esses ThemeJungle lá fora geralmente é uma grande dor de cabeça.

Então, comecei a brincar com as WP_CONTENT_*constantes. Que eu acredito que é um método muito menos propenso a erros e é isso que eu tenho trabalhando agora:

janela de atividade do safari
/mé a uploadspasta, /té a themespasta e /t/té a pasta do tema ativo. O site não é complexo, portanto, poucos recursos carregados ...


WP_CONTENTLESS

wp-config.php

Configuração wp-contentpara a raiz ( /public_html/) do site.

/** 
 Inside WP_CONTENT, the following folders should exist: 
 /languages , /mu-plugins , /plugins , /themes , /upgrade , /uploads  

 The WP_CONTENT_* definitions bellow REMOVE the existence of the /wp-content folder 
 and makes its contents reside in the ROOT of your site

 UTTERMOST attention is necessary when doing file maintenance activities in the server (i.e.: WP upgrades, new Webmaster...), 
 as the Themes and Plugins folders are meant to be renamed to /t and /p (serious candidates for unthoughful removal)

 PLEASE note:
 - we change the Plugins folder in WP_PLUGIN_* definitions
 - the Themes folder is changed by a MustUse Plugin 
   (/mu-plugins/set-extra-themes-folder.php)
 - the Uploads folder is changed in WordPress settings page 
   (http://example.com/wp-admin/options-media.php)
 - the hardcode path to be used in WP_CONTENT_DIR and WP_PLUGIN_DIR can be checked using an action inside the set-extra-themes-folder Plugin (check the comments in this file)
*/
define( 'WP_CONTENT_DIR', '/www/htdocs/username/public_html' );
define( 'WP_CONTENT_URL', 'http://www.example.com' );

define( 'WP_PLUGIN_DIR', '/www/htdocs/username/public_html/p' );
define( 'WP_PLUGIN_URL', 'http://www.example.com/p' );

Eu perguntei sobre isso em [wp-hackers] - Alguma desvantagem na configuração de WP_CONTENT_DIR (e URL) como DOCUMENT_ROOT? , onde John Blackbourn 1 , Mike Little 2 e Otto 3 tiveram a gentileza de aconselhar:

1
Eu tenho essa estrutura ativa em um site nos últimos 18 meses e não vejo nenhum problema. Como em qualquer alteração no local do diretório de conteúdo, você precisará verificar se todos os plug-ins adicionados ao site não assumem que o diretório de conteúdo estejawp-content.

2
Há discussões em torno da rede que$_SERVER['DOCUMENT_ROOT']podem ser suscetíveis a hackers. Nesse caso, isso é extremamente perigoso, porque há muitos lugares querequire()ouinclude() WP_CONTENT_DIR. 'alguma coisa';

3
Há casos em que o conteúdo$_SERVERpode ser perfeitamente seguro, mas por motivos de segurança, é melhor sempre tratá-lo como dados não confiáveis. Nesse caso específico, codifique o diretório com firmeza.


Uma nova pasta de temas

/mu-plugins/set-extra-themes-folder.php

Como não há WP_THEMES_*constantes, precisamos da função register_theme_directory () para " Registrar um diretório que contém temas " .
Tentamos definir o diretório extra para a raiz, mas os resultados são engraçados (ou seja: não funciona).

<?php
/*
    Plugin Name: Set Extra Themes Folder
    Version: 1.0
    Description: Allows the directory - http://example.com/t - to be used as an extra theme's directory
    Plugin URI: http://wordpress.stackexchange.com/questions/1507
    Author: brasofilo
    Author URI: http://rodbuaiz.com
*/


/**
 * Remove the comment from the following line to know the correct path to put in register_theme_diretory()
*/
//add_action( 'admin_head', 'brsfl_alert_directory_path' );

function brsfl_alert_directory_path()
{
    echo '<script type="text/javascript">
        alert("Directory: '.$_SERVER['DOCUMENT_ROOT'].'");
    </script>';
}


/**
 * The following will enable the directory "t" to be used as an EXTRA Themes directory
*/
register_theme_directory( '/www/htdocs/username/public_html/t' );


/**
 * De-registering default scripts in wp-includes for CDN ones
*/
add_action('init', 'brsfl_init_scripts');

function brsfl_init_scripts() 
{
    if ( !is_admin() ) 
    {
        wp_deregister_script( 'jquery' );
        wp_deregister_script( 'swfobject' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', false, '1.7.1' );
        wp_register_script( 'swfobject', 'https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js', false, null, true );
        wp_enqueue_script( 'jquery' );
        wp_enqueue_script( 'swfobject' );
    }
}

Pasta Uploads

/wp-admin/options-media.php

Em vez de http://example.com/uploads, será http://example.com/m.
Desmarcar Organize my uploads into...dará uma aparência WPless aos URLs dos ativos.
Se o site estiver ativo, uma pesquisa / substituição deve ser feita no banco de dados e os arquivos devem ser movidos.
carrega as configurações da pasta


Plugins e conteúdo principal

Consulte a Cris_Oresposta nestas perguntas e respostas.


Readme.html

Consulte a Rarstresposta nestas perguntas e respostas.


Outras etapas

Como de costume, os temas do ThemeJungle podem gerar hacks específicos no tema.
Como ... TimThumb não funciona (!!! lol !!!).

brasofilo
fonte
1
Desculpe, ThemeForest, parece que você tomou medidas para resolver esse problema . E com algumas boas mãos amiga !
Brasofilo 8/10/12
13

A única resposta válida: IMPOSSÍVEL

Tantas respostas votadas em alta .... hora de esclarecer as coisas. Bem, a verdade é que é praticamente impossível e, mesmo que seja, a vida provavelmente é muito curta para se esforçar. Qualquer resposta que promova etapas para ocultar o WP é apenas uma perda de tempo e o enganará, pensando que você está escondendo seu WP (isso é um absurdo).

1) O problema não são os wp-*URLs óbvios , o meta gerador etc. Os problemas mais difíceis são os padrões associados ao wordpress que um sistema doméstico não se preocupa em implementar como páginas de autor, ano, mês, dia, páginas = nnn como um parâmetro válido, tenha um formulário de comentários com a classe de comentários do wordpress, nomes de estrutura e link e, em seguida, haverá a autopromoção dos plugins de cache e do yoast SEO e provavelmente de muitos outros plugins que você vê apenas quando inspeciona o próprio HTML.

2) Existem outros métodos incontáveis ​​que mostram a existência do WP (e você não pode superar isso):

  • Até o cabeçalho de resposta php (como observado por Dan Gayle abaixo da minha resposta) retorna o cabeçalho específico do WP.

  • Qualquer um pode simplesmente consultar qualquer um dos arquivos .php raiz de dezenas: site.com/wp-cron.phpou site.com/xmlrpc.php(ou etc, que você não pode ocultar) e a resposta do cabeçalho será em 200vez de 404 not found.

  • qualquer um pode verificar os pontos de extremidade json para obter uma resposta específica do WP.

  • Dentro da página HTML, muitos .cssou .jsarquivos possuem frases específicas, que se referem claramente ao WP.

  • Dentro da página HTML, é fácil encontrar as classes de elementos / css, como <div class="entry-content post-14"...or etc (que é uma dica direta de que a estrutura usada é do WP)

  • Dentro da página HTML, você verá facilmente a uploadspasta, ou mesmo se a renomear com codificação, a parte da data como uploads/2018/05/image.jpg(ou mesmo image-315x225.jpg) mostra a estrutura típica do WP.

  • como muitos sites agora são criados usando o MultiSite, ele usa, ou seja, /site/2em links ...

  • execute ping em qualquer leia-me de plugins / temas (todos eles contêm), como plugin-name/readme.txt, retornando status 200.

  • e muitas, muitas, muitas outras coisas que você (ou até profissionais) não conseguirão esconder e desperdiçarão seus dias!


conclusão

E mesmo que você se esforce para limpar tudo, indicando que este é um wordpress, pode ser necessário refazer ou pelo menos verificar novamente após cada atualização de plugin ou núcleo. A vida é curta demais para isso.

Você pode enganar alguns diletantes, mas não pode se esconder de um bom inspetor. Se isso é feito como uma medida de segurança, é sempre a segurança pela obscuridade que está sempre errada, e se você tem vergonha de usar o wordpress, deixe-me dizer uma coisa - ninguém se importa, e mesmo os poucos que provavelmente não saber como descobrir por si mesmo.

A única coisa que você deve se importar é proteger o WP o máximo que puder e monitorar as atualizações regulares.

Mark Kaplun
fonte
a única resposta correta, eu queria postar isso. Eu diminuí a votação de todas as outras respostas, pois elas são apenas tentativas enganosas e que desperdiçam tempo para alcançar o objetivo impossível e sem sentido. Se você me permitir, adicionarei 2 centavos na sua resposta.
T.Todua
claro vá em frente.
precisa
Eu também votei nisso. Perder tempo escondendo wp apenas por segurança pela obscuridade. Não só não vai funcionar, mas também pode potencialmente quebrar a funcionalidade feita de maneira errada.
Remzi Cavdar 24/10
10

Você pode ter o WordPress em um servidor e raspar seu conteúdo de outro, incluindo apenas o conteúdo necessário.

Se você precisar de RSS, terá que fazer o mesmo com isso.

Efetivamente, seria como exibir páginas estáticas de um proxy ou CDN, mas apenas os bits que você deseja exibir. Você também pode usar um sistema de comentários baseado em javascript, como o Disqus.

Uso muito baixo de recursos, porque aqui não há bancos de dados no servidor que serve o conteúdo.

AndyBeard
fonte
@ AndyBeard - Essa é uma ideia muito interessante, mas exigiria muito tempo de desenvolvimento para obter algo viável. Ou você conhece um projeto de código aberto onde alguém já fez isso?
MikeSchinkel #
4
Aqui está uma solução wordpress.org/extend/plugins/really-static - existem algumas outras #
AndyBeard
7

Você pode criar seu endereço personalizado para fazer login no seu blog. Por não usar o caminho clássico “myblog.com/wp-admin” para chegar ao seu dashboard Esta página irá ajudá-lo com a criação de logins do stealth, isso também é bom para as medidas de segurança.

Portanto, as pessoas que anexam o wp-admin ao seu blog não poderão adivinhar :)

Mireille Raad
fonte
O link está desatualizado e o plug-in removido.
Kaiser
2
@kaiser: o Wayback Machine Internet Archive tem (e, surpreendentemente, até mesmo o zip);)
brasofilo
1
@kaiser brasofilo - graças cara para acompanhamento de resposta :) estou mantendo isso também
Mireille Raad
5

Além do acima, você precisa bloquear o acesso aos vários wp*arquivos e diretórios. Se alguém quisesse ver se você estava executando o WP, poderia adivinhar se você tinha wp-settings.phpou se poderia acessar algum diretório. Retornar um 403 não é suficiente porque informa ao usuário que o recurso existe; eles simplesmente não têm acesso a ele.

Eu não sou um especialista em apache, então fiz essa pergunta no serverfault.

Avery Chan
fonte
3

Não esqueça que muitas das informações do cabeçalho http que são enviadas junto com sua solicitação podem identificar seu site como sendo executado no WordPress. Por exemplo, se você verificar os cabeçalhos nos seguintes sites, é óbvio:

$ curl -I http://www.rollingstones.com/
Server: WP Engine/5.0

$ curl -I http://www.mattcutts.com
X-Powered-By: W3 Total Cache/0.9.1.3

$ curl -I http://blogs.reuters.com/us/
WP-Super-Cache: Served supercache file from PHP

Alguns são definidos pelo servidor, outros são por plugins; portanto, não há uma maneira de dizer como remover 100% deles, mas se você estiver usando o PHP 5.3, poderá usar

header_remove("X-Foo");( http://www.php.net/manual/en/function.header-remove.php )

para remover um cabeçalho PHP conhecido antes que seu conteúdo seja empurrado para fora. Não posso dizer com certeza onde colocar isso (talvez alguém possa entrar com essa informação), mas provavelmente é seguro colocá-lo no topo do seu index.php ANTES de qualquer conteúdo enviado ao navegador.

Dan Gayle
fonte
3

Isso pode ser difícil de conseguir se você é novo no php e mod_rewrite. Sugiro que você verifique com a seção da minha resposta. Ou tente você mesmo, você pode usar algo como isto para ocultar a estrutura do caminho wp-content / plugins:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^modules/(.*) /wp-content/plugins/$1 [L,QSA]
</IfModule>

Isso mudará o caminho para / modules. Use algo semelhante para outra estrutura; talvez seja necessário reescrever avançadas, consulte http://httpd.apache.org/docs/current/mod/mod_rewrite.html para obter informações adicionais sobre mod_rewrite.

Se preferir algo fora da caixa, existem alguns plugins legais, alguns comerciais, também gratuitos no repositório do WordPress, sugiro que experimente o WP Hide & Security Enhancer . Isso inclui muitas coisas e ajuda a mudar praticamente tudo para tornar seu WordPress irreconhecível. Aqui estão alguns recursos do código:

  • URL de administrador personalizado
  • URL de administrador personalizado
  • Bloquear URL de administrador padrão
  • Bloqueie qualquer acesso direto à pasta para ocultar completamente a estrutura
  • Nome do arquivo wp-login.php personalizado
  • Bloquear o padrão wp-login.php
  • Bloquear o padrão wp-signup.php
  • API XML-RPC de bloco
  • Novo caminho XML-RPC
  • URL de tema ajustável
  • URL do tema filho novo
  • Alterar o nome do arquivo de estilo de tema
  • Wp-include personalizado
  • Bloquear caminhos padrão wp-include
  • Bloco defalt wp-content
  • URLs de plug-ins personalizados
  • Alteração de URL de plug-in individual
  • Bloquear caminhos de plug-ins padrão
  • Novo URL de upload
  • Bloquear URLs de upload padrão
  • Remover versão wordpress
  • Bloco Meta Generator
  • Desative o emoji e o código javascript necessário
  • Remover tag pingback
  • Como remover wlwmanifest Meta
  • Como remover rsd_link Meta
  • Como remover wpemoji

e muitos mais..

WP-Silver
fonte
2

Não quero repetir as opções de codificação, pois elas foram exaustivamente cobertas, a outra opção que sei que funciona é usar um plug-in que oculta o wp. Eu usei este plugin antes para padrões satisfatórios. É chamado esconder meu WordPress.

NJENGAH
fonte
2

A maioria das respostas concentra-se em obscurecer o WordPress no código-fonte de uma página, mas mesmo antes disso o WP já se entregou no cabeçalho http de uma instalação padrão. Apenas tente seu próprio site em um site como o sniffer da web (finja ser o IE 6 e peça um cabeçalho http 1.0) e você verá que entre os retornos está:

<http://www.example.com/wp-json/>; rel="https://api.w.org/"

Este último é um link para a API do Wordpress.org . Está lá desde que a API REST foi incluída no WP 4.4. Você pode removê-lo com esta linha logo no início do seu functions.php:

remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );

Muitos plugins, como o Jetpack por seus links curtos, também podem inserir links no cabeçalho http. Eles podem fazer isso, porque o WP possui uma API HTTP , que permite manipular cabeçalhos. Você pode usar essa interface para remover todas as configurações de cabeçalho dos plug-ins, se você adicionar sua ação tarde o suficiente no processo.

Por fim, você pode usar a interface do cabeçalho .htaccess para interceptar qualquer coisa que o WP esteja fazendo. Por exemplo, você pode impedir que qualquer cabeçalho do Link seja enviado incluindo esta linha:

<IfModule mod_headers.c>
Header unset Link
</IfModule>
cjbj
fonte
0

Você pode personalizar um tema para excluir todas as informações do WordPress. Remova também o meta widget e qualquer widget que produza informações sobre a plataforma.

Pessoalmente, prefiro mostrar minha gratidão mostrando que estou usando o WordPress.

James
fonte
17
A gratidão é boa, mas não responde à questão central.
ZaMoose
-1

Você pode usar o plugin WPS Hide Login .
Você entra no seu wordpress usando wp-admin. Mas você pode mudar wp-adminpara personalizado usando este plugin.

Exemplo:

Antes: http://example.com/wp-admin
Depois: http://example.com/custom-text-to-login

fuxia
fonte