Pasos a seguir para ocultar el hecho de que un sitio está utilizando WordPress?


142

Tengo un sitio web para el que estamos tratando de ser discretos sobre el hecho de que estamos usando WordPress. ¿Qué pasos podemos tomar para que sea menos obvio?

EDITAR: Nota de seguridad importante:

Por favor, comprenda que hacer esto perfectamente es imposible según la respuesta de Mark , así que no confíe en esto como una medida de seguridad.


77
¿Por qué querrías ocultar que estás usando Wordpress?
Wadih M.

15
@Wadih: Porque me lo dijeron
Casebash

55
Eso es seguridad por oscuridad. Si realmente quieren, alguien puede correlacionar el comportamiento de las generaciones de páginas y demostrar que se está ejecutando en un motor de WordPress.
Wadih M.

28
@Wadih M. - "Seguridad por oscuridad" no es la única razón para esto. Uno de mis clientes quiere lo mismo, pero lo desean porque quieren poder vender sus servicios alojados a clientes que se negarían a pagar el dólar si pensaran "Diablos, solo están usando WordPress". Es un juego de marca / percepción, no de seguridad, al menos para mi cliente.
MikeSchinkel

2
Seis años en tantos sitios están usando WordPress, nadie te va a creer de todos modos. ;-)
cjbj

Respuestas:


128

Los mayores regalos de WordPress están entre las <head> </head>etiquetas.

Ejemplo de salida de contenido principal de WordPress por The Twentyten Theme y cómo eliminar:

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

Eliminar directamente de header.php

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

Oculte WordPress llamando a su hoja de estilo desde otra ubicación y cambie el directorio wp-content. WordPress requiere que su tema incluya información básica en la parte superior de style.css (style.css debe estar en el directorio raíz de temas). Deberá crear un CSS alternativo y llamarlo desde su cabeza. WordPress no requiere que use los temas style.css, solo requiere que esté en el directorio de temas.

Eliminar directamente de 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 eliminar estos enlaces adicionales, puede agregar un filtro a 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);

Puede cambiar su directorio de complementos y su directorio wp-content en su archivo wp-config.php, pero podría tener algunos problemas si su tema o algún complemento no utiliza el método adecuado para llamar a los archivos.

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

Establezca WP_CONTENT_URL en el URI completo de este directorio (sin barra inclinada), p. Ej.

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

Opcional Establezca WP_PLUGIN_DIR en la ruta local completa de este directorio (sin barra inclinada), p. Ej.

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

Establezca WP_PLUGIN_URL en el URI completo de este directorio (sin barra inclinada), p. Ej.

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

PLUGINS

Tenga en cuenta que algunos complementos como Akismat, All in One SEO, W3-Total-Cache, Super Cache y muchos otros agregan comentarios a la salida HTML. La mayoría son fáciles de modificar para eliminar los comentarios, pero sus cambios se sobrescribirán cada vez que se actualicen los complementos.

wp-incluye

El directorio wp-includes contiene jquery y varios otros archivos js que los temas o complementos llamarán usando wp_enqueue_script (). Para cambiar esto, deberá cancelar el registro de los scripts predeterminados de WordPress y registrar la nueva ubicación. Añadir 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');

Esto deberá hacerse con cada secuencia de comandos utilizada por su tema o complementos.


Chris_O : ¡Gran respuesta! Probablemente debería agregar también que si usan complementos o temas, muchos de estos se identifican fácilmente; es decir, si alguien está usando el complemento akismet o todo en uno, sigue siendo un regalo bastante muerto de alguien que sabe lo que está buscando.
MikeSchinkel

@MikeSchinkel True, pero al mismo tiempo, también lo son wp-includes y wp-admin; con la excepción de que no puede cambiar ninguno de esos, ni puede ocultarlos sin limitar la funcionalidad del sitio.
John P Bloch

@John P Bloch: Definitivamente, sin embargo, no lo habría dicho , pero lo habría dicho y . :)
MikeSchinkel

3
@MikeSchinkel : para wp-admin y wp-includes puedes hacer algunas cosas a través del control de acceso de apache, para que esas rutas sean inexistentes para otros usuarios y luego para el administrador, por ejemplo, conduciendo a un estándar 404.
hakre

@Chris_O: Pedido register_theme_directory(), creo que es genial para ocultar el tema dir fuera del directorio "wp-content".
Hakre

45

Un bit que a menudo se pierde: eliminar readme.htmlen la raíz de WordPress. No solo identifica la instalación como WP sino que también tiene una versión precisa. Y no olvides repetir las actualizaciones.

Pregunta relacionada: Impedir el acceso o eliminar automáticamente readme.html, license.txt, wp-config-sample.php


55
Buen punto: también, puede usar su .htaccess para negar siempre el acceso a readme.html para que no tenga que preocuparse por eliminarlo nuevamente.
Tim Malone


21

Siempre he usado el método Roots Theme .
Pero aplicarlo a los ThemeJungle que hay suele ser un gran dolor de cabeza.

Entonces, comenzó a jugar con las WP_CONTENT_*constantes. Lo cual creo que es un método mucho menos propenso a errores y esto es lo que tengo trabajando en este momento:

ventana de actividad de safari
/mes la uploadscarpeta, /tes la themescarpeta y /t/tes la carpeta del tema activo. El sitio no es complejo, por lo que se cargan pocos activos ...


WP_CONTENTLESS

wp-config.php

Configuración wp-contentde la raíz ( /public_html/) del sitio.

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

Lo he preguntado en [wp-hackers]. ¿Alguna desventaja al configurar WP_CONTENT_DIR (y URL) en DOCUMENT_ROOT? , donde John Blackbourn 1 , Mike Little 2 y Otto 3 tuvieron la amabilidad de aconsejar:

1
He tenido esta estructura activa en un sitio durante los últimos 18 meses y no he visto ningún problema. Al igual que con cualquier cambio en la ubicación del directorio de contenido, deberá verificar que los complementos que agregue al sitio no asuman que el directorio de contenido está enwp-content.

2
Hay discusiones en la red que$_SERVER['DOCUMENT_ROOT']pueden ser susceptibles de piratería En cuyo caso esto es extremadamente peligroso porque hay muchos lugares querequire()oinclude() WP_CONTENT_DIR. 'alguna cosa';

3
Hay casos en los que el contenido$_SERVERpuede ser perfectamente seguro, pero por motivos de seguridad, es mejor tratarlo siempre como datos no confiables. Para este caso específico, codifique el directorio.


Una nueva carpeta de temas

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

Como no hay WP_THEMES_*constantes, necesitamos la función register_theme_directory () para " Registrar un directorio que contiene temas " .
Intenté establecer el directorio adicional en la raíz, pero los resultados son divertidos (es decir, no 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' );
    }
}

Sube carpeta

/wp-admin/options-media.php

En lugar de http://example.com/uploads, lo será http://example.com/m.
Desmarcar Organize my uploads into...dará una apariencia WPless a las URL de los activos.
Si el sitio está activo, se debe realizar una búsqueda / reemplazo en la base de datos y los archivos deben moverse.
carga la configuración de la carpeta


Complementos y contenido principal

Consulte la Cris_Orespuesta en estas preguntas y respuestas.


Léame.html

Consulte la Rarstrespuesta en estas preguntas y respuestas.


Otros pasos

Como de costumbre, los temas de ThemeJungle pueden provocar hacks específicos en el tema.
Como ... TimThumb no funciona (!!! jajaja !!!).


1
Lo sentimos, ThemeForest, parece que se han tomado medidas para abordar este asunto . ¡Y con unas bonitas manos de ayuda !
brasofilo

13

La única respuesta válida: IMPOSIBLE

Tantas respuestas muy votadas ... es hora de dejar las cosas claras. Bueno, la verdad es que es prácticamente imposible e incluso si lo es, la vida es probablemente demasiado corta como para esforzarse. Cualquier respuesta que promueva pasos para ocultar WP es solo una pérdida de tiempo y lo engañará pensando que está ocultando su WP (eso es absurdo).

1) El problema no son las wp-*URL obvias , el meta generador, etc. Los problemas difíciles son los patrones asociados con WordPress que un sistema local no se molestará en implementar como páginas de autor, año, mes, día, use p = nnn como parámetro válido, tenga un formulario de comentarios con la clase de comentarios, estructura y nombres de enlaces de WordPress, y luego existe la autopromoción de los complementos de almacenamiento en caché y el SEO más reciente y probablemente muchos otros complementos que solo ve cuando inspecciona el propio HTML.

2) Hay otros métodos no contados que muestran la existencia de WP (y no se puede superar eso):

  • Incluso el encabezado de respuesta php (como señaló Dan Gayle debajo de mi respuesta) devuelve el encabezado WP específico.

  • Cualquiera puede consultar cualquiera de los archivos .php raíz de decenas: site.com/wp-cron.phpo site.com/xmlrpc.php(o etc., que no puede ocultar) y la respuesta del encabezado será en 200lugar de 404 not found.

  • cualquiera puede verificar si tiene puntos finales json para obtener una respuesta específica de WP.

  • Dentro de la página HTML, muchos de .csso .jsarchivo tiene unas frases específicas, que claramente se refiere a WP.

  • Dentro de la página HTML, es fácil encontrar los elementos / clases CSS, como <div class="entry-content post-14"...o etc. (que es una pista directa de que la estructura utilizada es de WP)

  • Dentro de la página HTML, verá fácilmente la uploadscarpeta, o incluso si cambia el nombre con codificación rígida, la parte de fecha como uploads/2018/05/image.jpg(o incluso image-315x225.jpg) muestra la estructura típica de WP.

  • como muchos sitios ahora están construidos usando MultiSite, usa ie /site/2en enlaces ...

  • haga ping a cualquier archivo Léame de complementos / temas (todos ellos contienen), como plugin-name/readme.txt, devolver el estado 200.

  • ¡y muchas, muchas, muchas otras cosas que usted (o incluso los profesionales) no podrán ocultar y simplemente desperdiciarán sus días!


conclusión

E incluso si se esfuerza por limpiar todo lo que indica que se trata de un wordpress, es posible que deba rehacer o al menos volver a verificar después de cada complemento o actualización principal. La vida es demasiado corta para eso.

Puede confundir algunos diletantes, pero no puede esconderse de un buen inspector. Si esto se hace como una medida de seguridad, entonces es la seguridad por oscuridad lo que siempre está mal, y si simplemente te avergüenzas de usar wordpress, entonces déjame decirte algo: a nadie le importa, e incluso los pocos que lo hacen probablemente no lo harán. saber cómo resolverlo por sí mismo.

Lo único que debería importarle es que proteja WP tanto como pueda y controle sus actualizaciones periódicas.


la única respuesta correcta, quería publicar eso. He rechazado todas las otras respuestas, ya que son pruebas engañosas y que pierden el tiempo para lograr el objetivo imposible y sin sentido. Si me lo permite, agregaré 2 centavos en su respuesta.
T.Todua

Claro, adelante.
Mark Kaplun

También voté por esto. Estaba perdiendo el tiempo ocultando wp solo por seguridad por oscuridad. No solo no va a funcionar, sino que también podría romper la funcionalidad si se hace mal.
Remzi Cavdar

10

Puede tener WordPress en un servidor y raspar su contenido de otro solo incluyendo el contenido que necesita.

Si necesita RSS, tendría que hacer lo mismo con eso.

Efectivamente sería como servir páginas estáticas desde un proxy o CDN, pero solo los bits que desea servir. Entonces, también podría usar un sistema de comentarios basado en JavaScript, como Disqus.

Uso de recursos realmente bajo, porque aquí no hay bases de datos en el servidor que sirve el contenido.


@AndyBeard : es una idea muy interesante, pero requeriría mucho tiempo de desarrollo para que algo funcione. ¿O conoces un proyecto de código abierto en el que alguien ya haya hecho esto?
MikeSchinkel

44
Aquí hay una solución wordpress.org/extend/plugins/really-static - hay algunas otras
AndyBeard

7

Puede crear su dirección personalizada para iniciar sesión en su blog. Al no utilizar la ruta clásica "myblog.com/wp-admin" para llegar a su panel de control Esta página lo ayudará a crear inicios de sesión sigilosos, esto también es bueno para las medidas de seguridad.

Entonces, las personas que agreguen wp-admin a su blog, no podrán adivinar :)


El enlace está desactualizado y se ha eliminado el complemento.
Kaiser

2
@kaiser: Internet Archive Wayback Machine lo tiene (y, sorprendentemente, incluso el zip);)
brasofilo


1
@kaiser brasofilo - gracias chico por seguir la respuesta :) también me quedo con esto
mireille raad

5

Además de lo anterior, debe bloquear el acceso a los diversos wp*archivos y directorios. Si alguien quisiera ver si estabas ejecutando WP, podrían adivinar si tuviste wp-settings.phpo si pudieron acceder a algún directorio. Devolver un 403 no es suficiente porque le dice al usuario que el recurso existe; simplemente no tienen acceso a él.

No soy un experto en Apache, así que hice esta pregunta sobre serverfault.


3

No olvide que gran parte de la información del encabezado http que se envía junto con su solicitud puede identificar que su sitio se ejecuta en WordPress. Por ejemplo, si marca los encabezados en los siguientes sitios, es obvio:

$ 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

Algunos de ellos están configurados por el servidor, algunos están configurados por complementos, por lo que no hay una manera para que yo diga cómo eliminar el 100% de ellos, pero si está usando PHP 5.3 puede usar

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

para eliminar un encabezado PHP conocido antes de que su contenido sea expulsado. No puedo decir con certeza dónde colocar esto (tal vez alguien más pueda aportar esa información), pero probablemente sea seguro colocarlo en la parte superior de su index.php ANTES de cualquier contenido que se envíe al navegador.


3

Esto puede ser difícil de lograr si eres nuevo en php y mod_rewrite. Sugiero que verifique con la sección de mi respuesta. O pruébelo usted mismo, puede usar algo como esto para ocultar la estructura de ruta de wp-content / plugins:

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

Esto cambiará la ruta a / modules. Utilice algo similar para otra estructura, es posible que necesite algunas reescrituras avanzadas, consulte http://httpd.apache.org/docs/current/mod/mod_rewrite.html para obtener información adicional sobre mod_rewrite.

Si prefiere algo listo para usar, hay algunos buenos complementos, algunos comerciales, también gratuitos en el repositorio de WordPress, le sugiero que pruebe WP Hide & Security Enhancer . Esto incluye muchas cosas y ayuda a cambiar casi todo para que tu WordPress sea irreconocible. Estas son algunas características del código:

  • URL de administración personalizada
  • URL de administración personalizada
  • Bloquear URL de administrador predeterminada
  • Bloquee cualquier acceso directo a la carpeta para ocultar completamente la estructura
  • Nombre de archivo wp-login.php personalizado
  • Bloquear por defecto wp-login.php
  • Bloquear por defecto wp-signup.php
  • Bloquear API XML-RPC
  • Nueva ruta XML-RPC
  • URL del tema ajustable
  • Nueva URL de tema infantil
  • Cambiar nombre de archivo de estilo de tema
  • Wp-include personalizado
  • Bloquear rutas de inclusión de wp predeterminadas
  • Bloquear contenido desalineado de wp
  • URL de complementos personalizados
  • Cambio de URL de complemento individual
  • Bloquear rutas de complementos predeterminadas
  • Nueva URL de carga
  • Bloquear URL de carga predeterminadas
  • Eliminar la versión de WordPress
  • Bloque Meta Generator
  • Desactiva el emoji y el código JavaScript requerido
  • Eliminar etiqueta de pingback
  • Eliminar wlwmanifest Meta
  • Eliminar rsd_link Meta
  • Eliminar wpemoji

y muchos más..


2

No quiero repetir las opciones de codificación ya que se han cubierto exhaustivamente, la otra opción que sé que funciona es usar un complemento que oculta wp. He usado este complemento antes con estándares satisfactorios. Se llama ocultar mi WordPress.


2

La mayoría de las respuestas se concentran en ocultar WordPress en el código fuente de una página, pero incluso antes de eso, WP ya se entregó en el encabezado http de una instalación estándar. Simplemente pruebe su propio sitio en un sitio como web-sniffer (pretenda ser IE 6 y solicite un encabezado http 1.0) y verá que entre los retornos está:

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

Este último es un enlace a la API de Wordpress.org . Está allí desde que la API REST se incluyó en WP 4.4. Puede eliminarlo con esta línea justo al comienzo de su functions.php:

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

Muchos complementos, como Jetpack por sus enlaces cortos, también pueden insertar enlaces en el encabezado http. Pueden hacerlo, porque WP tiene una API HTTP , que le permite manipular encabezados. Puede usar esta interfaz para eliminar todas las configuraciones de encabezado mediante complementos si agrega su acción lo suficientemente tarde en el proceso.

Finalmente, puede usar la interfaz de encabezado .htaccess para interceptar cualquier cosa que WP esté haciendo. Por ejemplo, puede evitar que se envíen encabezados de enlace incluyendo esta línea:

<IfModule mod_headers.c>
Header unset Link
</IfModule>

0

Puede personalizar un tema para excluir toda la información de WordPress. También elimine el meta widget y cualquier widget que genere información sobre la plataforma.

Personalmente, prefiero mostrar mi gratitud mostrando que estoy usando WordPress.


17
La gratitud es agradable, pero no responde la pregunta central.
ZaMoose

-1

Puede usar el complemento WPS Ocultar inicio de sesión .
Usted inicia sesión en su wordpress usando wp-admin. Pero puedes cambiarwp-admin a personalizado utilizando este complemento.

Ejemplo:

Antes: http://example.com/wp-admin
Después: http://example.com/custom-text-to-login