File .htaccess : molto più che un file di configurazione.

Il mondo di  .htaccess

Il file .htaccess è un file di configurazione che controlla come un webserver risponde alle varie richieste. È supportato da diversi webserver, tra cui il popolare webserver Apache utilizzato anche dalla maggior parte dei fornitori di web hosting commerciali. (Perchè allora ho messo la foto di Apache dato che viene supportato dal altri webserver? Perchè Apache è Il WebServer.)

I file .htaccess operano a livello di directory.  La presenza di .htaccess in una directory permette sovrascrivere le impostazioni di configurazione globale delle direttive fornite da un .htaccess più in alto nell’albero delle directory.

Da cosa deriva il nome del file .htaccess ?

.htaccess sta per “accesso ipertestuale”. Il nome deriva dall’uso originale di questo strumento, che era quello di controllare l’accesso di determinati utenti a determinati file per ogni directory.

Utilizzando un sottoinsieme delle direttive delle impostazioni http.conf di Apache, .htaccess ha permesso ad un amministratore di sistema di limitare l’accesso alle singole directory agli utenti con un nome e una password specificati in un file .htpasswd .



A cosa può servire?

I file .htaccess possono essere utilizzati per modificare la configurazione del software Apache Web Server per attivare/disattivare funzionalità e caratteristiche aggiuntive che il software Apache possiede. Queste funzioni includono la possibilità come il reindirizzamento di base o se  si verifica un errore del file 404 non trovato. Può essere utilizzato per funzioni più avanzate come la protezione dei contenuti tramite password o la prevenzione dei collegamenti di tipo hot link delle immagini. Inoltre, è possibile anche limitare l’accesso a una determinata directory o file ad un indirizzo ip o range di ip.

Qualche esempio.

In alcuni casi potreste scoprire che è necessario proteggere i contenuti di una directory  del vostro sito web e richiedere l’autenticazione per accedere a questi contenuti protetti. Magari dovete passare un file ad un vostro amico ed essere sicuri che arrivi nelle mani giuste. Vediamo come fare.

#Proteggiamo un file singolo
<Files filename_per_luigi.zip>
AuthType Basic
AuthName “Accesso Protetto”
AuthUserFile /home/utenti/.htpasswd
Require valid-user
</Files>

Qualche spiegazione

AuthUserFile /home/utenti/.htpasswd –> potete porre il file .htpasswd in una directory qualsiasi

La posizione del file di password può essere ovunque sul vostro server web.  Il ‘/directory/del/file/password/’ deve essere sostituito con il full/absolute path della directory contenente il file di password, e il file ‘.htpasswd’ deve esistere, questo potrebbe assumere qualsiasi valore come nome. Si usa il nome del file ‘.htpasswd’ perché il server riconosce il nome del file e lo nasconde ai visitatori. Attenzione , alcuni server richiedono che il file di password si trovi nella stessa directory del file .htaccess. È inoltre importante utilizzare un percorso full/absolute path del server per la posizione del file della password, un percorso relativo o qualsiasi variazione di un URL non funzionerà.

Ma cosa ci troviamo nel file di .htpasswd ? 

Una coppia di valori, o più coppie di valori formata da Username:Password

luigi:$apr1$4ty8vqm5$vPMOINosSzwu.V8wnrrmg0

Ah, $apr1$4ty8vqm5$vPMOINosSzwu.V8wnrrmg0 sarebbe aiutocomputerhelp

E la password come la creiamo dato che è criptata?

Esistono tantissime risorse on-line che permettono di fare questo. Una di queste è aspirine.org

usare htpasswd
generere password per htpasswd –  file .htaccess



Mi raccomando, non dimenticate la password in chiaro, perchè dalla password criptata non si può più ricavare la password in chiaro, non è reversibile!

Ripeto, è importante rendersi conto che la password memorizzata nel file non è la password effettiva utilizzata per il login. Si tratta piuttosto di un hash crittografico della password.

Ciò significa che la password è stata eseguita attraverso un algoritmo di crittografia e il risultato è stato memorizzato. Quando un utente effettua il login, la password in chiaro viene inserita ed eseguita attraverso lo stesso algoritmo. Se l’input è lo stesso, le password corrispondono e all’utente viene concesso l’accesso.

Memorizzare le password in questo modo le rende più sicure: se qualcuno dovesse accedere al vostro file .htpasswd, vedrebbe solo le password hashed, non gli originali. E non c’è modo di ricostruire gli originali dall’hash – è una crittografia a senso unico.

Proteggiamo l’intera directory

Basta inserire in  .htaccess

AuthType Basic
AuthName “Accesso Protetto”
AuthUserFile /qui_il_percorso_al_file_delle_password/.htpasswd
Require valid-user

Il file .htpasswd gia lo conosciamo.



Gestiamo gli indirizzi IP.

I servizi di blocco/permesso  offerti dal Web Server Apache ci permettono di negare o concedere l’accesso a visitatori determinati. Questo è estremamente utile per bloccare i visitatori indesiderati o per consentire al proprietario del sito web di accedere solo ad alcune sezioni del sito, come ad esempio un’area di amministrazione.

Per impostare le restrizioni e il blocco/accesso dei visitatori, creare un file .htaccess  con questo tipo di contenuto:

per negare un indirizzo ip o range

deny from 143.36.41.100

se vogliamo bloccare tutta la 143.36.41.x

deny from 143.36.41

se vogliamo permettere solo ad un ip o range di accedere

order deny,allow
deny from all
allow from 143.36.41.100

Gli Hot Link.

Immaginiamo che avete sul vostro server una bella libreria di immagini o filmati molto pesanti. A qualcuno potrebbe venire in mente di linkare dal proprio sito, le vostre risorse, in modo da risparmiare la sua banda passante. Oppure qualcuno, ed esistono, decidono di utilizzare i vostri css o JavaScript. Bene, per fermare questa cosa, a dir poco oscena, è possibile intervenire sul nostro amato file.

Attenzione, questa funzionalità richiede che ‘mod_rewrite’ sia abilitato sul vostro server. A causa delle richieste che possono essere fatte alle risorse di sistema, è improbabile che sia abilitato, quindi assicuratevi di verificare con il vostro amministratore di sistema o con la vostra società di web hosting.

Per impostare la prevenzione dei collegamenti a caldo per i file ‘.gif’, ‘.jpg’ e ‘.css’, ‘.avi’, ‘.pdf’creare un file .htaccess seguendo le istruzioni principali e la guida che include il seguente testo:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?iltuodominio.it/.*$ [NC]
RewriteRule \.(|.avi|.pdf|gif|jpg|css)$ – [F]

Redirect

La cosa più semplice è fare un redirect ad una pagina.

Redirect /directory_partenza/ http://www.aiutocomputerhelo.com/directory_destinazione/index.php

Possiamo utilizzare redirect per la gestione di pagine di errore personalizzate. Risulta molto utile permette di mostrare ai visitatori del sito web un messaggio di errore friendly, ad esempio se un URL sul vostro sito web non funziona. Questo evita lo scomodo errore “404 File Not Found” e consente di visualizzare una pagina che spieghi  le possibili soluzioni o guidando il visitatore nel contenuto del sito web.

Per impostare la gestione del redirect su errori è semplicissimo:

ErrorDocument 404 /paginegestioneerrori/404.html

ErrorDocument 405 /paginegestioneerrori/405.html

Tipologia errori

400 – Bad Request
401 – Authorization Required
403 – Forbidden
404 – Not Found
405 – Method Not Allowed
406 – Not Acceptable (encoding)
407 – Proxy Authentication Required
408 – Request Timed Out
409 – Conflicting Request
410 – Gone
411 – Content Length Required
412 – Precondition Failed
413 – Request Entity Too Large
414 – Request URI Too Long
415 – Unsupported Media Type