it-swarm-es.com

Pasos a seguir para ocultar el hecho de que un sitio utiliza WordPress?

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

EDITAR - Nota de seguridad importante:

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

141
Casebash

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

Ejemplo de salida de contenido de WordPress head 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). Necesitará crear un CSS alternativo y llamarlo desde su cabeza. WordPress no requiere que uses 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 cualquier complemento no usan el método adecuado para llamar a archivos.

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

Establezca WP_CONTENT_URL en el URI completo de este directorio (sin barra diagonal), por ejemplo.

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

Opcional Establezca WP_PLUGIN_DIR en la ruta local completa de este directorio (sin barra diagonal), por ejemplo.

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), por ejemplo.

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

COMPLEMENTOS

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 los cambios se sobrescribirán cada vez que se actualicen los complementos.

wp-includes

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 de WordPress predeterminados 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 script utilizado por su tema o complementos.

126
Chris_O

Un bit que a menudo se pierde: eliminar readme.html en 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 en las actualizaciones.

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

45
Rarst

Siempre he usado el método del tema Roots .
Pero aplicarlo a los ThemeJungle 's por ahí suele ser un gran dolor de cabeza.

Entonces, comencé a jugar con las constantes WP_CONTENT_*. Lo que creo es un método mucho menos propenso a errores y esto es lo que estoy trabajando ahora:

safari activity window
/m es la carpeta uploads, /t es la carpeta themes y /t/t es la carpeta del tema activo. El sitio no es complejo, por lo que pocos activos cargados ...


WP_CONTENTLESS

wp-config.php

Estableciendo wp-content a 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' );

He preguntado al respecto en [wp-hackers] - ¿Algún inconveniente en la configuración de WP_CONTENT_DIR (y URL) en DOCUMENT_ROOT? , donde John Blackbourn1Mike Little2 y Otto3 Tuvimos 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 dos veces los complementos que agregue al sitio; no debe suponer que el directorio de contenido esté en wp-content.

2
Hay discusiones alrededor de la red que el $_SERVER['DOCUMENT_ROOT'] puede ser susceptible de piratería. En cuyo caso esto es extremadamente peligroso porque hay muchos lugares que require() o include()WP_CONTENT_DIR. 'alguna cosa';

3
Hay casos en los que el contenido en $_SERVER puede 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 constantes WP_THEMES_*, necesitamos la función register_theme_directory () para "Register un directorio que contiene temas."
Intentó establecer el directorio extra en la raíz, pero los resultados son funny (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' );
    }
}

Subir carpeta

/wp-admin/options-media.php

En lugar de http://example.com/uploads, 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.
uploads folder settings


Plugins y contenido principal

Refiérase a Cris_O Answer en esta Q&A.


Readme.html

Refiérase a Rarst Responda en estas preguntas y respuestas.


Otros pasos

Como de costumbre, los temas de ThemeJungle pueden incitar hacks específicos en el tema.
Me gusta ... TimThumb no funciona (!!! lol !!!).

21
brasofilo

La única respuesta válida: IMPOSIBLE

Tantas respuestas de alto voto ... es hora de poner las cosas en orden. Bueno, la verdad es que es virtualmente imposible e incluso si lo fuera, la vida probablemente sea demasiado corta para ponerle un esfuerzo. Cualquier respuesta que promueva pasos para ocultar WP es solo una pérdida de tiempo y lo engañará al pensar que está ocultando su WP (eso es absurdo).

1) El problema no es el obvio wp-* urls, el generador meta, etc. Los problemas 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 un parámetro válido, tenga un formulario de comentarios con la clase de comentario de wordpress, la estructura y los nombres de los enlaces, y luego está la autopromoción de los complementos de almacenamiento en caché y SEO y probablemente muchos otros complementos que vea solo cuando inspeccione el propio HTML .

2) Hay otros métodos no contabilizados que muestran la existencia de WP (y no puedes superar eso):

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

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

  • cualquiera puede verificar si los puntos finales de json obtienen WP respuesta específica.

  • Dentro de la página HTML, muchos de los archivos .css o .js tienen frases específicas que se refieren claramente a WP.

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

  • Dentro de la página HTML, verás fácilmente la carpeta uploads, o incluso si cambias el nombre con hardcoding, la parte de la fecha como uploads/2018/05/image.jpg (o incluso image-315x225.jpg) muestra la estructura típica WP.

  • dado que muchos sitios ahora están construidos utilizando MultiSite, usa, por ejemplo, /site/2 en los enlaces ...

  • haga ping a cualquier léame de plugins/temas (todos ellos contienen), como plugin-name/readme.txt, devolviendo el estado 200.

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


conclusión

E incluso si hace todo lo posible para 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 del núcleo. La vida es demasiado corta para eso.

Puede confundir a 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 da vergüenza usar Wordpress, déjame decirte algo: a nadie le importa, e incluso los muy pocos que lo hagan probablemente no lo harán. saber cómo resolverlo por sí mismos.

Lo único que debe importarte es que protejas WP tanto como puedas y supervises sus actualizaciones periódicas.

12
Mark Kaplun

Puede tener WordPress en un servidor y eliminar su contenido de otro solo, incluido el contenido que necesita.

Si necesitas RSS tu tendrías 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. A continuación, también puede utilizar 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.

10
AndyBeard

Puedes crear tu dirección personalizada para iniciar sesión en tu blog. Al no usar 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 ocultos, esto también es bueno para las medidas de seguridad.

Así que la ppl que agregue wp-admin a tu blog, no podrá adivinar :)

7
mireille raad

Además de lo anterior, debe bloquear el acceso a los diversos archivos y directorios wp*. Si alguien quisiera ver si estaba ejecutando WP podrían adivinar si tenía wp-settings.php o si podían 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 ella.

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

5
Avery Chan

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

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

Esto cambiará la ruta a/modules. Use 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 prefieres algo fuera de la caja, hay algunos complementos de Niza, algunos comerciales, también gratuitos en el repositorio de WordPress, sugiero probar WP Hide & Security Enhancer . Esto incluye muchas cosas y ayuda a cambiar casi todo para hacer que su WordPress sea irreconocible. Aquí están algunas características del código:

  • URL de administración personalizada
  • URL de administración personalizada
  • Bloquear la URL del administrador por defecto
  • Bloquea cualquier acceso directo a la carpeta para ocultar completamente la estructura.
  • Nombre de archivo wp-login.php personalizado
  • Bloquear predeterminado wp-login.php
  • Bloquear predeterminado wp-signup.php
  • Bloquear API XML-RPC
  • Nueva ruta XML-RPC
  • Url de tema ajustable
  • Nuevo niño tema url
  • Cambiar el nombre del archivo de estilo del tema
  • Wp-include personalizado
  • Bloquear las rutas wp-include por defecto
  • Bloquear el contenido de walt defalt
  • Plugins personalizados urls
  • Cambio de URL de plugin individual
  • Bloquear rutas de plugins por defecto
  • Nueva URL de subida
  • Bloquear URLs de carga predeterminadas
  • Eliminar la versión de wordpress
  • Bloque meta-generador
  • Deshabilitar 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..

3
WP-Silver

No olvide que gran parte de la información del encabezado http que se envía junto con su solicitud puede identificar su sitio como ejecutado en WordPress. Por ejemplo, si revisa 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, otros están configurados por complementos, por lo que no hay una sola manera de decir 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 se elimine. No puedo decir con certeza dónde colocar esto (quizás alguien más pueda colaborar con 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
Dan Gayle

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

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

Este último es un enlace a Wordpress.org API . Está ahí desde que REST API 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 HTTP API , que le permite manipular los encabezados. Podría usar esta interfaz para eliminar todas las configuraciones de encabezado de los complementos si agrega su acción lo suficientemente tarde en el proceso.

Finalmente, puede usar .htaccess interface interface para interceptar cualquier cosa WP que 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>
2
cjbj

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 utilizado este plugin antes de estándares satisfactorios. Se llama ocultar mi WordPress.

2
NJENGAH

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 al mostrar que estoy usando WordPress.

0
James