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?
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é.
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 » Feed" href="http://example.com/feed/" />
<link rel="alternate" type="application/rss+xml" title="Example Blog » 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.
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
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:
/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-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()
ouinclude()
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.
/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' );
}
}
/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.
_ {Reportez-vous à Cris_O
Réponse dans cette Q & A.
_ {Reportez-vous à la réponse Rarst
dans cette question.}
Comme d'habitude, les thèmes ThemeJungle peuvent provoquer des piratages spécifiques dans le thème.
Comme ... TimThumb ne fonctionne pas (!!! lol !!!).
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.
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.
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 :)
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.
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:
et beaucoup plus..
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.
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>
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.
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.