back to top

Limitare l’accesso ad una cartella del sito mediante .htaccess e .htpasswd

In questo articolo, dedicato a chi utilizza il web-server Apache, vedremo come limitare l’accesso ad un intero sito o ad una specifica cartella ai soli utenti muniti di username e password. In realtà esistono diversi sistemi per creare aree "riservate" tuttavia, senza volerci addentrare nello sviluppo di sistemi di autenticazione, possiamo raggiungere questo obiettivo in modo piuttosto semplice.

Per creare la nostra "area riservata", infatti, possiamo semplicemente fare ricorso al solito file .htaccess in combinazione con .htpasswd: attraverso l’utilizzo congiunto di questi due file di sistema di Apache, infatti, è possibile creare vere e proprie aree protette e limitare l’accesso, ad esempio, all’area di amministrazione o a cartelle contenenti documenti riservati.

Il file .htaccess

Per prima cosa impostiamo il contenuto del file .htaccess come segue:

AuthName "Area Protetta"
AuthType Basic
AuthUserFile /home/siti/www.sito.com/privato/.htpasswd
Require valid-user

Come potete vedere nel nostro file .htaccess abbiamo specificato quattro direttive, vediamole nel dettaglio:

  • AuthName: questa direttiva è utilizzata per specificare un nome alla nostra area riservata (possiamo, ovviamente, assegnare il nome che riteniamo più adatto al nostro scopo);
  • AuthType: serve ad indicare il tipo di autenticazione (esistono diversi tipi di autenticazione in Apache, tuttavia nel nostro caso il valore Basic risulta essere assolutamente idoneo);
  • AuthUserFile: attraverso questa direttiva dobbiamo specificare il percorso completo (path) del file .htpasswd che andremo ad analizzare in seguito (attenzione: non potete utilizzare percorsi relativi ma dovete sempre specificare il percorso assoluto!);
  • Require: è possibile specificare quale utente o gruppo è legittimato a visualizzare i contenuti protetti; nel nostro caso abbiamo specificato valid-user, cioè qualsiasi utente tra quelli indicati nel file .htpasswd;

Una volta creato o modificato il nostro file .htaccess dovremo semplicemente salvarlo all’interno della cartella che desideriamo proteggere da occhi indiscreti. E’ evidente che se inseriamo il nostro file .htaccess nella root del sito… ad essere protetto sarà l’intero sito web!

Il file .htpasswd

Il file .htpasswd deve trovarsi esattamente nel punto indicato nella direttiva AuthUserFile del file .htaccess. All’interno di questo file vengono specificati gli utenti (e le relative password) legittimati a visualizzare i contenuti protetti. Questa la sintassi di questo file:

utente1:password1_criptata
utente2:password2_criptata
utente3:password3_criptata

Per creare il file .htpasswd possiamo seguire due strade:

1) se abbiamo accesso alla shell del nostro server effettuiamo il login sulla macchina e spostiamoci nella cartella in cui dovremo creare il file in questione:

cd /home/siti/www.sito.com/privato/

e digitiamo:

htpasswd -c .htpasswd nome_utente

ora il sistema ci chiederà la password da associare a questo utente, password che sarà successivamente necessario confermare. Ed ecco fatto: il nostro sistema ha generato per noi il file .htpasswd!

Se abbiamo già creato in precedenza un file .htpasswd e vogliamo semplicemente aggiungere un utente dobbiamo digitare:

htpasswd .htpasswd nome_utente

Anche in questo caso ci verrà richiesta la password da assegnare la nuovo utente. Dopo averla confermata il file .htpasswd si aggiornerà con la nuova utenza.

2) qualora non si abbia accesso alla shell del server sarà necessario ricorrere ad un piccolo espediente. In sostanza possiamo creare "a mano" il nostro file .htpasswd facendo ricorso ad uno dei tanti script e tool reperibili in Rete. Tra questi segnalo il nostro tool per la creazione del file .htpasswd presente all’interno della collezione di Toolset.it

Una volta generato il file non resterà che salvarlo ed uploadarlo nella nostra cartella web mediante un comune client FTP.

Perchè tutto funzioni correttamente, ovviamente, è necessario che il file .htaccess si trovi nella stessa cartella che si desidera proteggere; non è invece necessario che nella stessa cartella si trovi .htpasswd: l’importante, come già detto, è che sia indicato correttamente il percorso per raggiungerlo.

Ora proviamo ad accedere mediante http alla cartella protetta; se tutto funziona correttamente il web-server dovrebbe restituirci un prompt di accesso in cui inserire user e password.

accesso protetto con .htpasswd

Conclusioni

Questo tipo di sistema di autenticazione può rivelarsi molto utile qualora si abbia la necessità di mettere in sicurezza, per un numero ristretto di utenti, alcuni contenuti come, ad esempio, l’area di amministrazione del sito o alcune funzionalità come, ad esempio, l’upload di file. Viceversa questo sistema risulterà sicuramente non adatto ad esigenze più complesse come, ad esempio, la creazione di community o altri servizi in cui l’accesso è offerto ad una molteplicità di utenti: in tali casi sarà sicuramente necessario ricorrere a sistemi di autenticazione server-side sviluppati in PHP o con altri linguaggi di scripting.

Altri contenuti interessanti

Pubblicità
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

Leggi anche...

ERR_TOO_MANY_REDIRECTS: cos’è e come risolvere l’errore

L'errore ERR_TOO_MANY_REDIRECTS si verifica quando un browser tenta di...

Lucchetto HTTPS barrato di rosso: cosa significa e come risolvere

Il lucchetto HTTPS barrato di rosso mostrato dal browser...

Risolvere l’errore Bad Request … Size of a request header field exceeds server limit

L'errore "Bad Request: Your browser sent a request that...

NGinx: cos’è, come funziona e perché conviene usarlo

Prima di parlare di NGinx, delle sue caratteristiche e...

Errore 410: cos’è, quando si verifica e come risolvere (se necessario)

Il codice di stato HTTP 410 (o “Gone”), più...

Errore 451 Unavailable For Legal Reasons: cos’è e quando si verifica

L'errore HTTP 451 Unavailable For Legal Reasons è un...
Pubblicità