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.
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.