Back to home page
Il Jester
My little dream is in developing

Un po’ di sicurezza sul vostro sito WordPress. Azioni su htaccess, versione WP e admin

laptop-868816_960_720Ieri leggevo un interessante articolo su Your Inspiration Web sulla sicurezza del sito WordPress, ponendomi il problema effettivo della sicurezza dei blog targati WordPress. Gli attacchi informatici sono sempre in agguato. E il sito in questione propone una serie di accorgimenti per limitare al massimo gli accessi illegali alla piattaforma WordPress.

Il primo suggerimento propone l’inserimento nel file .htaccess del divieto di accedere a determinate pagine sensibili che rivelano la versione del vostro WordPress. Il codice da copiare e inserire è il seguente:

# blocca l’accesso ai file sensibili che rivelano informazioni sulla versione e non solo...
<FilesMatch "^(wp-config.php|readme.html|license.txt|LEGGIMI.txt|licenza.html)">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>

Come potete vedere, abbiamo bloccato con un forbidden 403 l’accesso ai file sensibili della vostra piattaforma che potrebbero rivelare o essere utilizzati per hackerare il vostro blog.

Secondariamente, per un’ulteriore sicurezza del vostro blog, è meglio disabilitare del tutto gli editori dei temi e dei plugins. Aggiungiamo questa riga di codice al file wp-config.php:

define('DISALLOW_FILE_EDIT', true); /* Disabilita l’editing dei file */

Ma non è finita qui. Dobbiamo nascondere la versione del nostro WordPress che viene generata nelle pagine web. Prima di tutto:

remove_action( 'wp_head', 'wp_generator' );

Da incollare nel vostro file functions.php. In questo modo evitiamo che nel tag head venga generata la versione del vostro WordPress. Alternativamente o contestualmente (meglio) si può utilizzare questo filtro, che rimuove la versione anche dai feeds RSS:

add_filter('the_generator', 'wp_complete_version_removal');
function wp_complete_version_removal() {
	return '';
}

Tramite questo filtro è possibile inoltre assegnare una versione “fittizia” al vostro WordPress.

Ma ciò purtroppo non basta. WordPress genera il numero di versione anche quando evochiamo nel tema un file javascript o un css tramite la funzione wp_enqueue_script o wp_enqueue_style. Questo “problema” si può ovviare assegnando un numero di versione alle risorse che evochiamo, in questo modo:

/* stili css */
wp_enqueue_style ( 'style-css', get_template_directory_uri() . '/style.css', array(), '1.1', 'screen' );

/* javascript */
wp_enqueue_script( 'jquery-ui', 'get_template_directory_uri() . '/js/superfish.js', array(), '1.8', false);

Questo perché se noi non inserissimo nulla o scrivessimo false, WordPress genererebbe comunque il proprio numero di versione:

<link rel="stylesheet" id="superfish-stylesheet-css" href="http://www.davidemura.it/wp-content/themes/iljblank/superfish.css?ver=3.4.5" type="text/css" media="screen">

Decisamente assurdo. Inoltre, se anche possiamo contenere questo problema per le risorse javascript e css inserite nel nostro tema, diverso è il discorso per quanto riguarda i plugins. Perché in questo caso, non possiamo certo mettere mano al plugin per correggere questo inconveniente. Se lo facessimo, risolveremmo nel momento, e cioè fino al prossimo aggiornamento del plugin. Insomma, ecco un modo per cancellare il problema alla radice:

function at_remove_wp_ver_css_js( $src ) {
    if ( strpos( $src, 'ver=' ) && !is_admin() )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'at_remove_wp_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'at_remove_wp_ver_css_js', 9999 );

Anche questo filtro deve essere incollato nel file function.php. In questo script ho lasciato la generazione del numero di versione solo per i css e i javascript caricati nel pannello amministrazione, sul presupposto che nel pannello entriate solo voi.

Un ulteriore accorgimento è evitare di usare il nome admin per le vostre credenziali d’accesso. In tal caso, o modificate il nome direttamente sul database oppure create un nuovo utente con le credenziali di amministratore, dopo di che, cancellate quello quello precedente.

Ma esistono molti altri accorgimenti per rendere il vostro sito sicuro, oppure potete usare un plugin che fa questo lavoro. Nell’articolo citato viene suggerito WP Better Security.

E' un post utile?00