Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Le direttive del file .htaccess

Come impostare le direttive di un file .htaccess per proteggere un'installazione di WordPress tramite regole valide per il Web server.
Come impostare le direttive di un file .htaccess per proteggere un'installazione di WordPress tramite regole valide per il Web server.
Link copiato negli appunti

Anche se è possibile istallare WordPress su qualsiasi server supporti PHP 5.6+ e MySLQ 5.6+ o MariaDB 1.0+, il Codex consiglia di istallarlo su Apache o Nginx. Quando si lavora su Apache a livello di directory si ha a disposizione il file .htaccess nel quale possono essere stabilite le direttive per il Web server.

Le direttive sono ereditate dalle sotto-directory secondo la gerarchia del filesystem. In una normale istallazione con l'attivazione dei pretty permalink WordPress genera il seguente file .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
# END WordPress

Queste direttive si limitano ad effettuare il rewriting delle URL, ma ad esse possono esserne aggiunte altre per regolare l'accesso alle risorse. Prima di ogni modifica al file .htaccess, è indispensabile effettuare un back-up del contenuto delle directory e sotto-directory sulle quali hanno effetto le modifiche, e del file .htaccess originale. Ciò perché a seguito di un errore l'intero contenuto potrebbe diventare inaccessibile.

Le tecniche che seguono sono valide in ogni sistema Apache, quindi utilizzabili per proteggere qualunque sito web, e non si limitano a WordPress.

Limitare l'accesso ai file

Alcuni file di WordPress sono particolarmente importanti e vanno protetti da eventuali intrusioni che potrebbero compromettere il funzionamento dell'intera istallazione. È prudente quindi impedire a qualsiasi utente di accedere ad essi. La seguente direttiva impedisce l'accesso al file .htaccess:

<Files .htaccess>
order allow,deny
deny from all
</Files>

La prima istruzione stabilisce lo scopo, ossia i file su cui vanno applicate le direttive (in questo caso l'.htaccess). Lo scopo può essere il nome di uno o più file o un'espressione regolare. La stessa istruzione precedente può essere riscritta come segue:

<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
</Files>

In questo modo viene impedito l'accesso a tutti i file nel cui nome è contenuta la stringa ".hta", in lettere maiuscole o minuscole. Oltre a proteggere il file .htaccess è buona norma proteggere anche il file wp-config.php:

<Files wp-config.php>
order allow,deny
deny from all
</Files>

Ora ogni tentativo di accesso diretto a questi file genererà un messaggio di errore 403: Forbidden.

Oltre che ai file .htaccess e wp-config.php, questa tecnica può essere applicata a readme.html, license.txt, licenza.html e leggimi.txt, che forniscono il numero della versione corrente di WordPress. Le direttive saranno le seguenti:

<FilesMatch "^(readme|licen.*|(?i:leggimi))\.(htm.*|txt)$">
order allow,deny
deny from all
</FilesMatch>

Naturalmente, queste direttive saranno utili solo nel caso in cui non si sia deciso di eliminare i file, come meglio illustrato nel precedente capitolo.

Le blacklist di indirizzi IP

Può succedere che un sito non protetto venga fatto oggetto di accessi provenienti da IP malevoli. L'amministratore se ne potrà accorgere sia dai commenti spam che dai tentativi di iscrizione al sito, sia, infine, dal file di log di Apache. Grazie all'.htaccess è possibile inibire l'accesso alle risorse del sito provenienti da questi indirizzi IP:

<Limit GET POST PUT>
order allow,deny
allow from all
deny from 123.123.123.123
deny from 456.456.456.456
</Limit>

I nomi dei metodi GET, POST e PUT sono case sensitive. Con queste direttive vengono bloccati gli accessi che provengono dagli indirizzi IP elencati all'interno della direttiva. Operando all'inverso, è possibile negare l'accesso a qualunque indirizzo IP con esclusione di quelli indicati dalle direttive allow:

<Limit GET POST PUT>
order allow,deny
allow from 123.123.123.123
deny from all
</Limit>

Questa soluzione non è tuttavia praticabile quando non si dispone di un IP statico. Gli indirizzi IP degli esempi precedenti sono composti da quattro cifre, quindi sono univoci. Apache consente però, di operare su intervalli di indirizzi. Una prima soluzione è quella di non specificare le ultime cifre degli indirizzi:

<Limit GET POST PUT>
order allow,deny
allow from all
deny from 123.123.123
</Limit>

Un'altra soluzione prevede l'utilizzo di wildcard:

<Limit GET POST PUT>
order allow,deny
allow from all
deny from 123.123.*.*
</Limit>

Una possibilità ulteriore è quella di ricorrere alla sintassi CIDR (Classes Inter-Domain Routing):

<Limit GET POST PUT>
order allow,deny
allow from all
deny from 123.123.123.0/16
deny from 124.124.0/16
</Limit>

Nel prossimo capitolo continuerà l'analisi delle misure di sicurezza consentite dal file .htaccess e si farà ricorso al modulo mod_rewrite di Apache.

Ti consigliamo anche