Corsi on-line

Apache: limitare l'accesso ad una cartella mediante .htaccess e .htpasswd

  • CommentiScrivi un commento
  • ForumDiscuti sul forum
  • PrevUsare il mod_rewrite per impedire l'inclusione di file da remoto
  • Next

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.

L'articolo continua dopo la pubblicità

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.

Corsi
  • Corso Linux
    Corso Linux
    Guida completa al sistema open-source. A partire da 39 €
  • Corso MySQL
    Corso MySQL
    Gestione del database open-source. A partire da 39 €
  • Corso PHP
    Corso PHP
    Creare siti web dinamici avanzati con PHP e MySQL. A partire da 39 €
Vedi anche...
Guide