web-dev-qa-db-fra.com

Étapes à suivre pour masquer le fait qu'un site utilise WordPress?

J'ai un site Web pour lequel nous essayons d'être discret sur le fait que nous utilisons WordPress. Quelles mesures pouvons-nous prendre pour le rendre moins évident?

EDIT- Note importante de sécurité:

S'il vous plaît, comprenez qu'il est impossible de le faire parfaitement selon Mark answer . Ne vous fiez donc pas à cela comme mesure de sécurité.

141
Casebash

Les plus gros cadeaux WordPress se situent entre les balises <head> </head>.

Exemple de contenu de tête WordPress généré par The Twentyten Theme et comment le supprimer:

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

Supprimer directement de header.php

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

Cachez WordPress en appelant votre feuille de style à partir d'un autre emplacement et modifiez le répertoire wp-content. WordPress requiert que votre thème inclue des informations de base en haut de style.css (style.css doit se trouver dans le répertoire racine des thèmes). Vous devrez créer un autre CSS et l'appeler de votre tête. WordPress ne vous oblige pas à utiliser les thèmes style.css, il doit uniquement figurer dans le répertoire themes.

Supprimer directement 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" /> 

Pour supprimer ces liens supplémentaires, vous pouvez ajouter un filtre à 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);

Vous pouvez modifier votre répertoire de plug-ins et votre répertoire wp-content dans votre fichier wp-config.php, mais vous pouvez rencontrer des problèmes si votre thème ou l'un de ses plugins n'utilise pas la méthode appropriée pour appeler des fichiers.

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

Définissez WP_CONTENT_URL sur l'URI complet de ce répertoire (sans barre oblique), par exemple.

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

Facultatif Définissez WP_PLUGIN_DIR sur le chemin d'accès local complet de ce répertoire (sans barre oblique), par exemple.

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

Définissez WP_PLUGIN_URL sur l'URI complet de ce répertoire (sans barre oblique), par exemple.

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

PLUGINS

Sachez que certains plugins tels que Akismat, le référencement tout en un, le cache W3-Total, le super cache et bien d’autres ajoutent des commentaires à la sortie HTML. La plupart sont faciles à modifier pour supprimer les commentaires, mais vos modifications seront écrasées à chaque fois que les plugins seront mis à jour.

wp-includes

Le répertoire wp-includes contient jquery et divers autres fichiers js que des thèmes ou des plug-ins vont appeler à l’aide de wp_enqueue_script (). Pour changer cela, vous devrez annuler l'enregistrement des scripts WordPress par défaut et enregistrer le nouvel emplacement. Ajouter à 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');

Cela devra être fait avec chaque script utilisé par votre thème ou vos plugins.

126
Chris_O

Un bit qui manque souvent - supprimez readme.html dans la racine WordPress. Il identifie non seulement l'installation en tant que WP, mais possède également une version précise. Et n'oubliez pas de répéter les mises à jour.

Question connexe: Empêcher l'accès ou supprimer automatiquement le fichier readme.html, license.txt, wp-config-sample.php

45
Rarst

J'ai toujours utilisé la méthode Thème Roots .
Mais l’appliquer à ces ThemeJungle est généralement un gros casse-tête.

Alors, a commencé à jouer avec les constantes WP_CONTENT_*. Ce qui, à mon avis, est une méthode beaucoup moins sujette aux erreurs et voici ce que je travaille actuellement:

safari activity window
/m est le dossier uploads, /t est le dossier themes et /t/t est le dossier du thème actif. Le site n'est pas complexe, il y a donc peu d'éléments chargés ...


WP_CONTENTLESS

wp-config.php

Paramétrer wp-content à la racine (/public_html/) du 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' );

J'ai posé la question à ce sujet dans [wp-hackers] - Des inconvénients à ce que WP_CONTENT_DIR (et son URL) soient définis sur DOCUMENT_ROOT? , où John Blackbourn1Mike Little2 et Otto3 ont eu la gentillesse de conseiller:

1
Cette structure est active sur un site depuis 18 mois et je n’ai rencontré aucun problème. Comme pour toute modification de l'emplacement du répertoire de contenu, vous devez vérifier que tous les plugins que vous ajoutez au site ne supposent pas que le répertoire de contenu est à wp-content.

2
Il y a des discussions sur le réseau, le $_SERVER['DOCUMENT_ROOT'] peut être piraté. Dans ce cas, cela est extrêmement dangereux car il existe de nombreux endroits où require() ou include()WP_CONTENT_DIR. 'quelque chose';

3
Il existe des cas où le contenu de $_SERVER peut être parfaitement sécurisé, mais pour des raisons de sécurité, il est préférable de toujours le traiter comme des données non fiables. Pour ce cas spécifique, coder en dur le répertoire.


Un nouveau dossier de thèmes

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

Comme il n'y a pas de constante WP_THEMES_*, nous avons besoin de la fonction register_theme_directory () to "Enregistrez un répertoire qui contient des thèmes.".
J'ai essayé de définir le répertoire supplémentaire à la racine, mais les résultats sont drôle (c'est-à-dire que cela ne fonctionne pas).

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

Dossier de téléchargements

/wp-admin/options-media.php

Au lieu de http://example.com/uploads, ce sera http://example.com/m.
Décocher Organize my uploads into... donnera une apparence WPless aux URL des ressources.
Si le site est actif, une recherche/remplacement doit être effectué dans la base de données et les fichiers doivent être déplacés.
uploads folder settings


Plugins et contenu principal

_ {Reportez-vous à Cris_O Réponse dans cette Q & A.


Lisezmoi.html

_ {Reportez-vous à la réponse Rarst dans cette question.}


Autres étapes

Comme d'habitude, les thèmes ThemeJungle peuvent provoquer des piratages spécifiques dans le thème.
Comme ... TimThumb ne fonctionne pas (!!! lol !!!).

21
brasofilo

La seule réponse valable: IMPOSSIBLE

Il y a tellement de réponses très votées… Il est temps de mettre les choses au clair. Eh bien, la vérité est que c'est virtuellement impossible et même si c'est le cas, la vie est probablement trop courte pour y consacrer des efforts. Toute réponse, qui favorise les étapes pour cacher WP est juste une perte de temps et vous induira en erreur en pensant que vous cachez votre WP (c'est absurde).

1) Le problème ne réside pas dans les URLs wp-* évidentes, dans la méta du générateur, etc. Les problèmes difficiles concernent les modèles associés à WordPress qu’un système développé localement ne se donnera pas la peine d’implémenter comme des pages d’auteurs, des pages d’années, de mois ou de jours, utilisez p = nnn en tant que paramètre valide, avez un formulaire de commentaire avec la classe de commentaires wordpress, la structure et les noms de liens, puis il y a la promotion automatique des plugins de mise en cache et yoast SEO et probablement de nombreux autres plugins que vous voyez uniquement lorsque vous inspectez le code HTML lui-même. .

2) Il existe d’autres méthodes non dénombrées qui montrent l’existence de WP (et vous ne pouvez pas le battre):

  • Même l'en-tête de réponse php (comme noté par Dan Gayle sous ma réponse) renvoie l'en-tête spécifique WP.

  • N'importe qui peut simplement interroger l'un des fichiers .php racine des dizaines: site.com/wp-cron.php ou site.com/xmlrpc.php (ou autre, que vous ne pouvez pas masquer) et l'en-tête de réponse sera 200 au lieu de 404 not found.

  • n'importe qui peut vérifier si les points de terminaison JSON obtiennent la réponse spécifique WP.

  • Dans la page HTML, de nombreux fichiers .css ou .js contiennent une phrase spécifique, qui fait clairement référence à WP.

  • Dans la page HTML, il est facile de trouver les classes elements/css, comme <div class="entry-content post-14"... ou etc (ce qui indique directement que la structure utilisée est celle de WP).

  • Dans la page HTML, vous verrez facilement le dossier uploads, ou même si vous le renommez avec le codage en dur, la partie de date comme uploads/2018/05/image.jpg (ou même image-315x225.jpg) affiche la structure typique WP.

  • comme de nombreux sites sont maintenant construits avec MultiSite, il utilise i.e. /site/2 dans les liens ...

  • lancez une requête ping vers un fichier Lisez-moi de plugins/thèmes (tous les contenus), comme plugin-name/readme.txt, renvoyant le statut 200.

  • et de nombreuses autres choses que vous (ou même des professionnels) serez incapables de cacher et perdront vos journées!


conclusion

Et même si vous vous efforcez de tout nettoyer pour indiquer qu'il s'agit d'une wordpress, vous devrez peut-être refaire ou au moins revérifier après chaque plugin ou mise à niveau principale. La vie est trop courte pour cela.

Vous pouvez induire en erreur certains diluants, mais vous ne pouvez vous cacher d’un bon inspecteur. Si cela est fait comme une mesure de sécurité, alors c’est toujours la sécurité par l’obscurité qui est fausse, et si vous avez simplement honte d’utiliser Wordpress, alors laissez-moi vous dire quelque chose - personne ne se soucie de vous, et même le très petit nombre qui ne le fera probablement pas. savoir comment le résoudre par lui-même.

La seule chose qui compte, c’est que vous protégez WP autant que vous le pouvez et surveillez ses mises à jour régulières.

12
Mark Kaplun

Vous pouvez avoir WordPress sur un serveur et extraire votre contenu d'un autre uniquement en incluant le contenu dont vous avez besoin.

Si vous avez besoin de RSS, vous devrez faire de même avec cela.

Effectivement, ce serait comme si vous serviez des pages statiques à partir d’un proxy ou d’un CDN, mais uniquement les bits que vous voulez servir. Vous pouvez également simplement utiliser un système de commentaires basé sur JavaScript, tel que Disqus.

Utilisation vraiment faible des ressources, car il n’existe aucune base de données sur le serveur servant le contenu.

10
AndyBeard

Vous pouvez créer votre adresse personnalisée pour vous connecter à votre blog. En n'utilisant pas le chemin classique "myblog.com/wp-admin" pour accéder à votre tableau de bord Cette page vous aidera à créer des connexions furtives, cela est également utile pour les mesures de sécurité.

Donc, le ppl qui ajoute wp-admin à votre blog ne pourra pas deviner :)

7
mireille raad

Outre ce qui précède, vous devez verrouiller l'accès aux différents fichiers et répertoires wp*. Si quelqu'un voulait savoir si vous utilisiez WP, il pouvait deviner s'il y avait wp-settings.php ou s'il pouvait accéder à certains répertoires. Renvoyer un 403 n'est pas suffisant car il indique à l'utilisateur que la ressource existe. ils n'y ont tout simplement pas accès.

Je ne suis pas un expert Apache alors j'ai posé cette question sur serverfault.

5
Avery Chan

Cela peut être difficile à réaliser si vous êtes nouveau sur php et mod_rewrite. Je vous suggère donc de vérifier avec la section de ma réponse. Ou essayez vous-même, vous pouvez utiliser quelque chose comme ceci pour masquer la structure de chemin d'accès wp-content/plugins:

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

Cela changera le chemin vers/modules. Utilisez quelque chose de similaire pour une autre structure, vous aurez peut-être besoin de quelques réécritures avancées, voir http://httpd.Apache.org/docs/current/mod/mod_rewrite.html pour plus d'informations sur mod_rewrite.

Si vous préférez quelque chose hors de la boîte, il y a quelques plugins Nice, certains commerciaux, également gratuits sur le référentiel WordPress, je suggère d'essayer WP Hide & Security Enhancer . Cela inclut beaucoup de choses et aide à changer à peu près tout pour rendre votre WordPress méconnaissable. Voici quelques fonctionnalités du code:

  • URL personnalisée de l'administrateur
  • URL personnalisée de l'administrateur
  • Bloquer l'URL d'administration par défaut
  • Bloquer tout accès direct au dossier pour masquer complètement la structure
  • Nom de fichier wp-login.php personnalisé
  • Bloquer les wp-login.php par défaut
  • Bloquer les wp-signup.php par défaut
  • Bloquer l'API XML-RPC
  • Nouveau chemin XML-RPC
  • URL de thème réglable
  • Nouveau thème url enfant
  • Changer le nom du fichier de style de thème
  • Wp-include personnalisé
  • Bloquer les chemins d'accès wp-include par défaut
  • Bloquer le contenu de wp-defalt
  • URL de plugins personnalisés
  • Changement d'URL de plugin individuel
  • Bloquer les chemins de plugins par défaut
  • Nouvelle URL de téléchargement
  • Bloquer les URL de téléchargement par défaut
  • Supprimer la version wordpress
  • Bloc méta-générateur
  • Disble the emoji et le code javascript requis
  • Supprimer la balise pingback
  • Supprimer wlwmanifest Meta
  • Supprimer rsd_link Meta
  • Supprimer wpemoji

et beaucoup plus..

3
WP-Silver

N'oubliez pas qu'un grand nombre d'informations d'en-tête http envoyées avec votre demande peuvent identifier votre site comme fonctionnant sur WordPress. Par exemple, si vous consultez les en-têtes sur les sites suivants, il est évident que:

$ 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

Certaines d'entre elles sont définies par le serveur, d'autres par des plugins. Il n'y a donc aucun moyen de supprimer 100% d'entre eux, mais si vous utilisez PHP 5.3, vous pouvez utiliser

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

pour supprimer un en-tête connu PHP avant que votre contenu ne soit supprimé. Je ne peux pas dire avec certitude où placer ceci (peut-être que quelqu'un d'autre peut apporter cette information), mais il est probablement prudent de le placer tout en haut de votre index.php AVANT tout contenu envoyé au navigateur.

3
Dan Gayle

La plupart des réponses se concentrent sur l’obscurcissement de WordPress dans le code source d’une page, mais même avant cela, WP s’était déjà révélé dans l’en-tête http d’une installation standard. Essayez simplement votre propre site sur un site comme web-sniffer (prétendez être IE 6 et demandez un en-tête http 1.0) et vous verrez que parmi les retours figurent:

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

Ce dernier est un lien vers le Wordpress.org API . C'est là depuis que l'API REST a été incluse dans WP 4.4. Vous pouvez l'enlever avec cette ligne juste au début de votre functions.php:

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

De nombreux plugins, comme Jetpack pour ses liens courts, peuvent également insérer des liens dans l'en-tête http. Ils peuvent le faire, car WP possède une HTTP API , qui vous permet de manipuler les en-têtes. Vous pouvez utiliser cette interface pour supprimer tous les paramètres d'en-tête des plug-in si vous ajoutez votre action assez tard dans le processus.

Enfin, vous pouvez utiliser .htaccess header interface pour intercepter tout ce que WP fait. Par exemple, vous pouvez empêcher l’envoi d’en-têtes de lien en incluant cette ligne:

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

Je ne veux pas répéter les options de codage car elles ont été couvertes de manière exhaustive. L'autre option qui fonctionne est l'utilisation d'un plug-in qui cache wp. J'ai utilisé ce plugin auparavant à des normes satisfaisantes. Son appelé cacher mon WordPress.

2
NJENGAH

Vous pouvez personnaliser un thème pour exclure toutes les informations WordPress. Supprimez également les méta-widgets et tous les widgets générant des informations sur la plateforme.

Personnellement, je préfère montrer ma gratitude en montrant que j'utilise WordPress.

0
James