I passaggi da seguire per nascondere il fatto che un sito utilizza WordPress?


142

Ho un sito Web per il quale stiamo cercando di essere discreti sul fatto che stiamo usando WordPress. Quali passi possiamo prendere per renderlo meno ovvio?

EDIT- Nota importante sulla sicurezza:

Ti preghiamo di comprendere che farlo perfettamente è impossibile secondo la risposta di Mark , quindi non fare affidamento su questo come misura di sicurezza.


7
Perché dovresti nascondere che stai usando Wordpress?
Wadih M.,

15
@Wadih: Perché mi è stato detto di
Casebash l'

5
Questa è sicurezza per oscurità. Se lo desiderano, qualcuno può correlare il comportamento delle generazioni di pagine e dimostrare che funziona su un motore di wordpress.
Wadih M.,

28
@Wadih M. - "Security by Obscurity" non è l'unico motivo per questo. Uno dei miei clienti vuole lo stesso, ma lo vogliono perché vogliono essere in grado di vendere i loro servizi ospitati a clienti che lo farebbero a pezzi pagando il miglior dollaro se pensassero "Cavolo, stanno solo usando WordPress". Quindi è un gioco di branding / percezione, non di sicurezza, almeno per il mio cliente.
MikeSchinkel,

2
Sei anni su così tanti siti utilizzano WordPress, nessuno ti crederà comunque. ;-)
cjbj

Risposte:


128

I più grandi omaggi di WordPress sono tra i <head> </head>tag.

Esempio di contenuto head di WordPress prodotto da The Twentyten Theme e come rimuovere:

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

Rimuovi direttamente da header.php

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

Nascondi WordPress chiamando il tuo foglio di stile da un'altra posizione e modifica la directory wp-content. WordPress richiede che il tema includa alcune informazioni di base nella parte superiore di style.css (style.css deve trovarsi nella directory principale dei temi). Dovrai creare un CSS alternativo e chiamarlo dalla tua testa. WordPress non richiede di utilizzare i temi style.css, ma richiede solo di trovarsi nella directory dei temi.

Rimuovi direttamente da 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" /> 

Per rimuovere questi collegamenti extra è possibile aggiungere 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);

Puoi cambiare la directory del tuo plug-in e la tua directory wp-content nel tuo file wp-config.php ma potresti avere dei problemi se il tuo tema o eventuali plugin non usano il metodo corretto per chiamare i file.

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

Impostare WP_CONTENT_URL sull'URI completo di questa directory (nessuna barra finale), ad es

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

Opzionale Impostare WP_PLUGIN_DIR sul percorso locale completo di questa directory (nessuna barra finale), ad es

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

Impostare WP_PLUGIN_URL sull'URI completo di questa directory (nessuna barra finale), ad es

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

PLUGINS

Tieni presente che alcuni plugin come Akismat, All in One SEO, W3-Total-Cache, Super Cache e molti altri aggiungono commenti all'output HTML. La maggior parte sono facili da modificare per rimuovere i commenti, ma le modifiche verranno sovrascritte ogni volta che i plugin vengono aggiornati.

wp-includes

La directory wp-Includes contiene jquery e vari altri file js che temi o plugin chiameranno usando wp_enqueue_script (). Per modificarlo dovrai annullare la registrazione degli script WordPress predefiniti e registrare la nuova posizione. Aggiungi 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');

Questo dovrà essere fatto con ogni script usato dal tuo tema o plugin.


Chris_O : Ottima risposta! Probabilmente dovresti aggiungere anche che se usano plugin o temi molti di questi sono facilmente identificabili; cioè se qualcuno sta usando il plugin akismet o all-in-one-seo, allora è ancora un regalo piuttosto morto da qualcuno che sa cosa stanno cercando.
MikeSchinkel,

@MikeSchinkel Vero, ma allo stesso tempo, così sono wp-Includes e wp-admin; con l'eccezione che non è possibile modificare nessuno di questi, né è possibile nasconderli senza limitare la funzionalità del sito.
John P Bloch,

@John P Bloch: Sicuramente, comunque non avrei detto ma , avrei detto e . :)
MikeSchinkel,

3
@MikeSchinkel : per wp-admin e wp-include puoi fare alcune cose tramite il controllo degli accessi apache, in modo da rendere quei percorsi inesistenti per altri utenti quindi l'amministratore, ad esempio portando a uno standard 404.
hakre

@Chris_O: Checkout register_theme_directory(), penso che sia fantastico nascondere la directory tematica dalla directory "wp-content".
Hacre,

45

Un bit che spesso manca: elimina readme.htmlnella radice di WordPress. Non solo identifica l'installazione come WP ma ha anche una versione precisa. E non dimenticare di ripetere gli aggiornamenti.

Domanda correlata: impedire l'accesso o eliminare automaticamente readme.html, license.txt, wp-config-sample.php


5
Un buon punto: puoi anche usare il tuo .htaccess per negare sempre l'accesso a readme.html in modo da non doverti preoccupare di rimuoverlo di nuovo.
Tim Malone,


21

Ho sempre usato il metodo Roots Theme .
Ma applicarlo a quei ThemeJungle di solito c'è un grosso mal di testa.

Quindi, ho iniziato a giocare con le WP_CONTENT_*costanti. Che credo sia un metodo molto meno soggetto a errori e questo è ciò che sto lavorando in questo momento:

finestra di attività safari
/mè la uploadscartella, /tè la themescartella ed /t/tè la cartella del tema attiva. Il sito non è complesso, quindi poche risorse caricate ...


WP_CONTENTLESS

wp-config.php

Impostazione wp-contentsu root ( /public_html/) del sito.

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

L'ho chiesto in [wp-hackers] - Qualche inconveniente nell'impostazione di WP_CONTENT_DIR (e URL) su DOCUMENT_ROOT? , dove John Blackbourn 1 , Mike Little 2 e Otto 3 sono stati abbastanza gentili da consigliare:

1
Ho avuto questa struttura attiva su un sito negli ultimi 18 mesi e non ho riscontrato alcun problema. Come con qualsiasi modifica alla posizione della directory dei contenuti, dovrai ricontrollare tutti i plug-in che aggiungi al sito non presumere che la directory dei contenuti siawp-content.

2
Ci sono discussioni in rete che$_SERVER['DOCUMENT_ROOT']potrebbero essere suscettibili di pirateria informatica. Nel qual caso questo è estremamente pericoloso perché ci sono molti posti cherequire()oinclude() WP_CONTENT_DIR. 'qualcosa';

3
Ci sono casi in cui il contenuto in$_SERVERpuò essere perfettamente sicuro, ma per motivi di sicurezza, è meglio trattarlo sempre come dati non attendibili. Per questo caso specifico, hardcode la directory.


Una nuova cartella di temi

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

Dato che non ci sono WP_THEMES_*costanti, abbiamo bisogno della funzione register_theme_directory () su " Registra una directory che contiene temi " .
Ho provato a impostare la directory extra sulla radice ma i risultati sono divertenti (cioè: non funziona).

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

Carica cartella

/wp-admin/options-media.php

Invece http://example.com/uploads, lo sarà http://example.com/m.
Se deselezioni, Organize my uploads into...apparirà un WPless agli URL degli asset.
Se il sito è attivo, è necessario eseguire una ricerca / sostituzione nel database e spostare i file.
carica le impostazioni della cartella


Plugin e contenuto principale

Fare riferimento a Cris_ORisposta in queste domande e risposte.


readme.html

Fare riferimento a RarstRisposta in queste domande e risposte.


Altri passi

Come al solito, i temi di ThemeJungle possono richiedere hack specifici nel tema.
Come ... TimThumb non funziona (!!! lol !!!).


1
Siamo spiacenti, ThemeForest, sembra che tu abbia preso provvedimenti per affrontare la questione . E con delle belle mani amiche !
brasofilo,

13

L'unica risposta valida: IMPOSSIBILE

Così tante risposte votate ... il tempo di mettere le cose in chiaro. Bene, la verità è che è praticamente impossibile e anche se lo è, la vita è probabilmente troppo breve per fare uno sforzo. Qualsiasi risposta che promuova i passaggi per nascondere il WP è solo una perdita di tempo e ti indurrà a pensare che stai nascondendo il tuo WP (è assurdo).

1) Il problema non sono gli ovvi wp-*URL, il meta meta del generatore, ecc. I problemi difficili sono associati a schemi associati a wordpress che un sistema domestico non si preoccuperà di implementare come pagine dell'autore, pagine di anno, mese, giorno, uso p = nnn come parametro valido, avere un modulo di commento con la classe di commento di wordpress, la struttura e i nomi dei collegamenti, e poi c'è l'autopromozione dei plugin di cache e del tuo SEO e probabilmente molti altri plugin che vedi solo quando controlli lo stesso HTML.

2) Esistono altri metodi non conteggiati che mostrano l'esistenza di WP (e non puoi batterlo):

  • Anche l'intestazione di risposta php (come notato da Dan Gayle sotto la mia risposta) restituisce l'intestazione WP specifica.

  • Chiunque può semplicemente interrogare uno qualsiasi dei file .php di decine di root: site.com/wp-cron.phpo site.com/xmlrpc.php(o ecc, che non puoi nascondere) e la risposta dell'intestazione sarà 200invece di 404 not found.

  • chiunque può controllare ha endpoint json per ottenere una risposta specifica al WP.

  • All'interno della pagina HTML, molti file .csso .jscontengono frasi specifiche che si riferiscono chiaramente a WP.

  • All'interno della pagina HTML, è facile trovare gli elementi / le classi css, come <div class="entry-content post-14"...o etc (che è un suggerimento diretto che la struttura usata è di WP)

  • All'interno della pagina HTML, vedrai facilmente la uploadscartella, o anche se la rinominerai con hardcoding, la parte della data come uploads/2018/05/image.jpg(o anche image-315x225.jpg) mostra la tipica struttura WP.

  • poiché molti siti ora vengono creati utilizzando MultiSite, utilizza cioè /site/2nei collegamenti ...

  • esegui il ping a qualsiasi plug-in / tema readme (tutti loro contengono), ad esempio plugin-name/readme.txt, restituendo lo stato 200.

  • e molte, molte, molte altre cose che tu (o anche i professionisti) non sarai in grado di nascondere e perderai semplicemente le tue giornate!


conclusione

E anche se fai uno sforzo per ripulire tutto ciò che indica che si tratta di un wordpress, potresti dover ripetere o ricontrollare dopo ogni plug-in o aggiornamento di base. La vita è troppo breve per quello.

Potresti fuorviare alcuni diletants, ma non puoi nasconderti da un buon ispettore. Se questo viene fatto come misura di sicurezza, allora è sempre la sicurezza dall'oscurità che è sempre sbagliata, e se ti vergogni di usare wordpress, allora lascia che ti dica qualcosa: a nessuno importa, e anche i pochi che probabilmente non lo faranno saperlo capire da soli.

L'unica cosa di cui dovresti preoccuparti è proteggere WP il più possibile e monitorare i suoi aggiornamenti regolari.


l'unica risposta corretta, volevo postarla. Ho ridimensionato tutte le altre risposte, in quanto sono solo prove fuorvianti e che fanno perdere tempo per raggiungere l'obiettivo impossibile e senza senso. Se mi permetti, aggiungerò 2 centesimi nella tua risposta.
T.Todua,

certo andare avanti.
Mark Kaplun,

Ho anche votato a favore. Sta perdendo tempo a nascondere wp solo per sicurezza dall'oscurità. Non solo non funzionerà, ma potrebbe anche potenzialmente interrompere la funzionalità sbagliata.
Remzi Cavdar,

10

Puoi avere WordPress su un server e scrappare il tuo contenuto da un altro solo incluso il contenuto di cui hai bisogno.

Se hai bisogno di RSS dovresti fare lo stesso con quello.

In effetti sarebbe come servire pagine statiche da un proxy o CDN, ma solo i bit che vuoi servire. È quindi possibile utilizzare anche un sistema di commenti basato su javascript come Disqus.

Utilizzo delle risorse davvero basso, qui non ci sono database sul server che servono il contenuto.


@AndyBeard - È un'idea molto interessante, ma richiederebbe molto tempo di sviluppo per ottenere qualcosa di fattibile. O conosci un progetto open source in cui qualcuno lo ha già fatto?
MikeSchinkel,

4
Ecco una soluzione wordpress.org/extend/plugins/really-static - ce ne sono alcuni altri
AndyBeard

7

Puoi creare il tuo indirizzo personalizzato per accedere al tuo blog. Non utilizzando il classico percorso "myblog.com/wp-admin" per accedere alla dashboard Questa pagina ti aiuterà a creare accessi invisibili, è utile anche per le misure di sicurezza.

Quindi il ppl che aggiunge wp-admin al tuo blog, non sarà in grado di indovinare :)


Il collegamento è obsoleto e il plug-in rimosso.
Kaiser

2
@kaiser: Internet Archive Wayback Machine ce l' ha (e, sorprendentemente, anche lo zip);)
brasofilo,


1
@kaiser brasofilo - ragazzo, grazie per dare attuazione a risposta :) Sto mantenendo questo così
Mireille Raad

5

Oltre a quanto sopra, è necessario bloccare l'accesso ai vari wp*file e directory. Se qualcuno volesse vedere se stavi eseguendo WP, potrebbero indovinare se tu avessi wp-settings.phpo se potessero accedere a qualche directory. Restituire un 403 non è sufficiente perché dice all'utente che la risorsa esiste; semplicemente non hanno accesso ad esso.

Non sono un esperto di Apache, quindi ho posto questa domanda su serverfault.


3

Non dimenticare che molte delle informazioni di intestazione http che vengono inviate insieme alla tua richiesta possono identificare il tuo sito come in esecuzione su WordPress. Ad esempio, se controlli le intestazioni sui seguenti siti, è ovvio:

$ 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

Alcuni di questi sono impostati dal server, alcuni sono impostati da plugin, quindi non c'è un modo per me di dire come rimuoverli al 100%, ma se stai usando PHP 5.3 puoi usare

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

per rimuovere un'intestazione PHP nota prima che il contenuto venga trasferito. Non posso dire con certezza dove collocare questo (forse qualcun altro può presentare queste informazioni), ma probabilmente è sicuro metterlo in cima al tuo indice.php PRIMA di qualsiasi contenuto inviato al browser.


3

Questo può essere difficile da ottenere se non conosci php e mod_rewrite. Ti suggerisco di verificare con la sezione della mia risposta. Oppure provalo tu stesso, puoi usare qualcosa del genere per nascondere la struttura del percorso wp-content / plugins:

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

Questo cambierà il percorso in / module. Usa qualcosa di simile per altre strutture, potresti aver bisogno di alcune riscritture avanzate, vedi http://httpd.apache.org/docs/current/mod/mod_rewrite.html per ulteriori informazioni su mod_rewrite.

Se preferisci qualcosa di pronto, ci sono alcuni plugin carini, alcuni commerciali, anche gratuiti nel repository di WordPress, suggerisco di provare WP Hide & Security Enhancer . Questo include molte cose e aiuta a cambiare praticamente tutto per rendere irriconoscibile il tuo WordPress. Ecco alcune caratteristiche del codice:

  • URL amministratore personalizzato
  • URL amministratore personalizzato
  • Blocca URL amministratore predefinito
  • Blocca qualsiasi accesso diretto alle cartelle per nascondere completamente la struttura
  • Nome file wp-login.php personalizzato
  • Blocca wp-login.php predefinito
  • Blocca wp-signup.php predefinito
  • Blocca API XML-RPC
  • Nuovo percorso XML-RPC
  • URL del tema regolabile
  • URL del tema New child
  • Cambia il nome del file di stile del tema
  • Wp-include personalizzato
  • Blocca i percorsi wp-include predefiniti
  • Blocca il contenuto wp di defalt
  • URL plug-in personalizzati
  • Modifica dell'URL del plug-in individuale
  • Blocca i percorsi predefiniti dei plugin
  • Nuovo URL di caricamento
  • Blocca gli URL di caricamento predefiniti
  • Rimuovi la versione di wordpress
  • Blocco del Meta Generator
  • Disabilita l'emoji e il codice javascript richiesto
  • Rimuovi tag pingback
  • Rimuovi wlwmanifest Meta
  • Rimuovi rsd_link Meta
  • Rimuovi wpemoji

e molti altri..


2

Non voglio ripetere le opzioni di codifica poiché sono state trattate in modo esauriente, l'altra opzione che conosco funziona usando un plugin che nasconde wp. Ho usato questo plugin prima di standard soddisfacenti. Si chiama hide my WordPress.


2

La maggior parte delle risposte si concentra sull'oscuramento di WordPress nel codice sorgente di una pagina, ma ancor prima che WP si sia già dato via nell'intestazione http di un'installazione standard. Prova il tuo sito su un sito come lo sniffer web (fingi di essere IE 6 e chiedi un'intestazione http 1.0) e vedrai che tra i ritorni c'è:

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

Quest'ultimo è un collegamento all'API Wordpress.org . È lì da quando l'API REST è stata inclusa in WP 4.4. Puoi rimuoverlo con questa riga all'inizio del tuo functions.php:

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

Molti plugin, come Jetpack per i suoi collegamenti, possono anche inserire collegamenti nell'intestazione http. Possono farlo, perché WP ha un'API HTTP , che consente di manipolare le intestazioni. È possibile utilizzare questa interfaccia per rimuovere tutte le impostazioni dell'intestazione dai plug-in se si aggiunge l'azione abbastanza tardi nel processo.

Infine, è possibile utilizzare l' interfaccia di intestazione .htaccess per intercettare qualsiasi azione di WP. Ad esempio, puoi impedire l'invio di qualsiasi intestazione Link includendo questa riga:

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

0

Puoi personalizzare un tema per escludere tutte le informazioni di WordPress. Rimuovere anche i meta widget e tutti i widget che genererebbero informazioni sulla piattaforma.

Personalmente, preferisco mostrare la mia gratitudine dimostrando che sto usando WordPress.


17
La gratitudine è buona, ma non risponde alla domanda principale.
ZaMoose,

-1

Puoi utilizzare il plugin WPS Nascondi accesso .
Accedi al tuo wordpress usando wp-admin. Ma puoi passare wp-admina personalizzato usando questo plugin.

Esempio:

Prima: http://example.com/wp-admin
Dopo: http://example.com/custom-text-to-login

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.