I webmaster possono uti­liz­za­re una serie di im­po­sta­zio­ni a livello di directory su web server NCSA com­pa­ti­bi­li come Apache HTTP Server con l’aiuto del file di con­fi­gu­ra­zio­ne .htaccess (acronimo di Hypertext Access). In questo modo è possibile stabilire, ad esempio, quali utenti possono accedere a de­ter­mi­na­ti file. Anche la creazione di rein­di­riz­za­men­ti au­to­ma­ti­ci è un tipico esempio di attacchi hacker tramite htaccess.

Cos’è esat­ta­men­te un file .htaccess?

L’.htaccess è un file di testo grazie al quale utenti au­to­riz­za­ti possono mo­di­fi­ca­re le im­po­sta­zio­ni di una directory specifica uti­liz­zan­do web server NCSA com­pa­ti­bi­li. Questa tecnica è stata scoperta negli anni ’90 per il server web NCSA HTTPD, allora ri­vo­lu­zio­na­rio, ma oggi entra in azione so­prat­tut­to con il ben più uti­liz­za­to Apache. Questo processo viene gestito da una o più centrali di file di con­fi­gu­ra­zio­ne che si chiamano httpd.conf. Questi file di con­fi­gu­ra­zio­ne superiori vengono di solito salvati all’interno dell’elenco di programmi del server web stesso e definiti dall’am­mi­ni­stra­to­re del server. In questo file l’am­mi­ni­stra­to­re sta­bi­li­sce, tra le altre cose, se un utente riceve l’au­to­riz­za­zio­ne a cambiare la con­fi­gu­ra­zio­ne del server at­tra­ver­so trucchi .htaccess. Se riceve l’au­to­riz­za­zio­ne, l’utente può creare e mo­di­fi­ca­re i file .htaccess per ogni directory de­si­de­ra­ta, so­vra­scri­ven­do parti della con­fi­gu­ra­zio­ne a livello della directory.

Ogni volta che il server web accede a una pagina, so­vra­scri­ve ri­cor­si­va­men­te tutte le directory superiori senza tra­sfe­ri­re le in­for­ma­zio­ni; in altre parole il file .htaccess di una sot­to­di­rec­to­ry so­vra­scri­ve quello di una directory superiore. Le im­po­sta­zio­ni del server, che vengono mo­di­fi­ca­te con un file .htaccess, sono valide a partire dal momento in cui l’.htaccess viene me­mo­riz­za­to nella ri­spet­ti­va directory, senza necessità di riavviare il server. La tra­scri­zio­ne deve essere corretta al 100 per cento, in quanto un .htaccess scritto male impedisce, in alcuni casi, l’accesso a tutto il server. Se i trucchi .htaccess vengono usati cor­ret­ta­men­te, si ha accesso ad alcune funzioni utili per la gestione del server web. Poiché queste possono essere tra­sfe­ri­te ve­lo­ce­men­te e in­cor­po­ra­te in modo semplice nella struttura del sistema esistente, spesso si utilizza anche la de­no­mi­na­zio­ne attacchi hacker tramite .htaccess. 

Creare un file .htaccess: funziona così

Poiché i file .htaccess sono dei semplici file di testo, è facile crearli e mo­di­fi­car­li con un qualsiasi editor di testo. In base al tipo di accesso di­spo­ni­bi­le al server web dif­fe­ri­sce anche la procedura di creazione. Con la con­nes­sio­ne Telnet o SSH è possibile creare e mo­di­fi­ca­re file .htaccess di­ret­ta­men­te sul server. Se si ha soltanto un accesso FTP a di­spo­si­zio­ne, è ne­ces­sa­rio prima creare il file in locale e in seguito caricarlo. Nei sistemi Unix i file di con­fi­gu­ra­zio­ne di una directory specifica co­min­cia­no sempre con un punto. Questo lo ca­rat­te­riz­za come “nascosto”, che gra­fi­ca­men­te, uti­liz­zan­do un client FTP, può far apparire il file .htaccess caricato come scomparso. Durante la creazione di un file .htaccess in locale su sistemi Windows il punto genera inoltre un problema fa­cil­men­te ri­sol­vi­bi­le. Affinché l’editor non ci aggiunga la tipica esten­sio­ne .txt, si dovrebbe scegliere la voce “tutti i file” quando lo si salva. Quando il file .htaccess è stato scritto con il comando de­si­de­ra­to, va spostato nella directory ap­pro­pria­ta. A questo punto diventa subito valido, anche per tutte le sot­to­di­rec­to­ry.

Con­fi­gu­ra­re il server con attacchi hacker tramite htaccess

Grazie ai file .htaccess gli utenti au­to­riz­za­ti dall’am­mi­ni­stra­to­re del server hanno la pos­si­bi­li­tà di in­fluen­za­re in modo rapido e semplice la con­fi­gu­ra­zio­ne del server web. Così per esempio, grazie all’au­ten­ti­ca­zio­ne http, possono pro­teg­ge­re intere directory da accessi non au­to­riz­za­ti. Inoltre è possibile impostare pagine di errore o rein­di­riz­za­men­to. Esistono diversi sug­ge­ri­men­ti e trucchi.htaccess. I dieci più im­por­tan­ti sono descritti nei seguenti paragrafi: 

1. Pagine di errore al­ter­na­ti­ve

Se durante l’accesso al sito si verifica un errore, i server web mostrano di default un file HTML standard o messaggi co­di­fi­ca­ti. Questi messaggi di errore a volte sono proprio una seccatura e tutt’altro che user-friendly. Con l’aiuto dell’.htaccess è possibile impostare pagine o avvisi al­ter­na­ti­vi che su un negozio online, per esempio, rimandano a un articolo simile. Per creare proprie pagine di errore è ne­ces­sa­rio inserire i seguenti dati nel file .htaccess, uti­liz­zan­do la regola Er­ror­Do­cu­ment, seguita dal numero d’errore e il percorso della pagina:

# messaggio di errore se il server si trova in locale
ErrorDocument 404 /errors/404notfound.html

Se la pagina di errore si trova di­ret­ta­men­te sulla root del sito o rimanda a un URL esterno, è possibile digitare l’URL completo nel file .htaccess, che in questo caso si troverà nella directory radice:

# messaggio di errore se il server si trova su un
ErrorDocument 404 http: //www.miodominio.it/errore.html

2. Redirect

Un grande ambito di utilizzo dei file .htaccess sono i re­di­rec­ting o rein­di­riz­za­men­ti. È possibile per esempio rein­di­riz­za­re singoli file all’interno di un sito o anche tra­smet­te­re le richieste a un altro dominio. Questo è utile so­prat­tut­to se si tra­sfe­ri­sce un sito.  Una volta salvato nella root, il seguente codice fa in modo che le richieste al dominio ori­gi­na­rio vengano tra­sfe­ri­te dal server al nuovo dominio:

# semplice redirect
Redirect / http://www.nuovo-dominio.it/

È possibile tra­sfe­ri­re singoli file con lo stesso metodo all’interno di un sito, nel caso in cui, per esempio, il nome della pagina sia cambiato:

# redirecting di singoli file
Redirect /vecchia_pagina.html http: //www.nuovosito.com/nuova_pagina.php

3.  Creare un’area protetta da password

Chi non volesse scrivere uno script per login in PHP, ma ha comunque bisogno di pro­teg­ge­re una directory o dei file sul suo server, può uti­liz­za­re invece dei trucchi .htaccess per la con­fi­gu­ra­zio­ne di ambiti protetti. In­nan­zi­tut­to per questo tipo di password è ne­ces­sa­rio un secondo file chiamato .htpasswd, nel quale vengono salvate le ri­spet­ti­ve password. Queste vanno inserite nel sistema Unix solo in modo cifrato (a tal scopo esistono diversi ge­ne­ra­to­ri di .htpasswd). Ecco come creare directory protette:

# protezione della password con .htaccess
AuthType Basic
AuthName “Restricted Area”
AuthUserFile /home/siti/www.sito.com/privato/.htpasswd (inserire il percorso assoluto per   giungere al file dove sono contenute le password)  
AuthPGAuthoritative Off
Require valid-user User1 User2 User3

Inoltre il file .htpasswd viene creato con gli utenti insieme alle loro password cifrate:

# .htpasswd – file per nomi utente e password
utente1:password1_criptata
utente2:password2_criptata
utente3:password3_criptata

Mentre viene creato il file .htpasswd, pre­fe­ri­bil­men­te sulla root, è ne­ces­sa­rio che il file .htaccess si trovi nella stessa cartella che si vuole pro­teg­ge­re.

4. Aumentare il limite di memoria PHP

L’utilizzo di ap­pli­ca­zio­ni PHP è soggetto a un memory limit preciso. Il memory limit determina l’utilizzo massimo della memoria, che tutti gli script PHP uti­liz­za­ti sul server possono in­fluen­za­re. Con il seguente comando nel file .htaccess è possibile aumentare la quantità di memoria:

# PHP memory limit
php_value memory_limit 128M

Il valore dato, cioè 128M, rap­pre­sen­ta in questo caso un limite di 128 megabyte. In base alla memoria e ai requisiti del server è possibile impostare anche altri limiti.

5. Mo­di­fi­ca­re il fuso orario del server

Se il server web è impostato su un fuso orario sbagliato, è possibile mo­di­fi­car­lo sull’.htaccess con il seguente codice:

# impostare il fuso orario
SetEnv TZ Europe/Roma

6. Bloccare indirizzi IP

È possibile impedire l’accesso al sito a indirizzi e ambiti IP specifici. Con il giusto codice nel file .htaccess è possibile escludere ad­di­rit­tu­ra tutti gli indirizzi IP e ga­ran­tir­ne l’accesso soltanto ad alcuni. Così si può per esempio rendere di­spo­ni­bi­le l’accesso al web soltanto ai di­pen­den­ti nell’ambito di un intranet aziendale. Il seguente comando riassume alcuni possibili accessi limitati:

# regole per bloccare indirizzi IP
Order deny,allow
Deny from .hotmail.com
Deny from 192.168         
Allow from 192.168.220.102

Con il comando „order“ si definisce l’ordine di lettura dei dati inseriti: la sequenza di in­se­ri­men­to non è im­por­tan­te. Gli altri comandi co­mu­ni­ca­no al server, che tutti gli utenti con iden­ti­fi­ca­to­re .hotmail.com nonché tutti quelli con indirizzo IP numerico inclusi nel range 192.168 non possono accedere al sito. Un’eccezione è l’user con indirizzo IP 192.168.220.102.

7. Rein­di­riz­za­men­to del sito da HTTP a HTTPS

Chi per il suo dominio utilizza un cer­ti­fi­ca­to SSL, ha la pos­si­bi­li­tà di rein­di­riz­zar­lo at­tra­ver­so un comando .htaccess su un pro­to­col­lo HTTPS cifrato:

# attivare HTTPS
RewriteEngine On
RewriteCond %{Server_Port} !=443
RewriteRule ^(.*)$ https ://miodominio.it/$1 [R=301,L]

8. Attivare l’accesso ai file tramite il browser

Con il seguente comando si può mostrare il contenuto della cartella nel browser e renderlo sca­ri­ca­bi­le da altri utenti:

# mostra i contenuti della directory
Options +Indexes

9. Bloccare l'ho­tlin­king delle immagini

Gli hotlink sono dei link mediante i quali una terza persona collega un file mul­ti­me­dia­le sul suo sito web, so­li­ta­men­te immagini, che sono salvate su un altro host. Così per il pro­prie­ta­rio vero si crea un aumento del volume di dati, che non è causato da lui. Grazie ad alcuni trucchi .htaccess è possibile bloccare il col­le­ga­men­to su de­ter­mi­na­ti tipi di dati del proprio sito con il seguente comando:

# bloccare hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://il-mio-dominio-webhosting/.*$ [NC] [OR]
RewriteCond %{HTTP_REFERER} !^http://www.il-mio-dominio-webhosting/.*$ [NC] [OR]
RewriteRule .*\.(gif|GIF|jpg|JPG|bmp|BMP|wav|mp3|wmv|avi|mpeg)$ - [F]

10. Con­fi­gu­ra­re il set di caratteri per documenti

I caratteri speciali creano spesso problemi, se non si attiva la giusta codifica di caratteri. Con il file .htaccess si può co­di­fi­ca­re, a livello di directory, quale sistema uti­liz­za­re per i ri­spet­ti­vi documenti. Il seguente comando definisce la codifica UTF-8 per tutti i documenti:

# codificare il sistema di scrittura
AddDefaultCharset utf-8

Se volete co­di­fi­ca­re soltanto alcuni tipi di documenti con un de­ter­mi­na­to sistema di scrittura, è ne­ces­sa­rio inserire il seguente comando:

# codifica dei caratteri soltanto per determinati file
AddDefaultCharset utf-8 .css .htm .html .xhtml .php

Trucchi .htaccess: semplici e facili da applicare

I trucchi e sug­ge­ri­men­ti qui elencati per uti­liz­za­re i file .htaccess per la con­fi­gu­ra­zio­ne del server, danno solo una piccola idea dell’ampio spettro di fun­zio­na­li­tà di questo pratico file. Tutti i comandi vengono subito eseguiti dal server web, senza che sia ne­ces­sa­rio un riavvio completo.

Vai al menu prin­ci­pa­le