Come creare un’area riservata in 5 minuti?
Ti sarà certamente capitato di dover realizzare un’area riservata nel tuo sito. Se non hai necessità particolari a livello di gestione ed il tuo bisogno è limitato al richiedere dei dati di autenticazione per poter accedere ad una cartella, è certamente sproporzionato sviluppare un sistema in PHP/Mysql/Sessioni come si farebbe in altri casi.
In questo articolo vedremo come implementare un’area riservata in pochi minuti utilizzando ancora una volta le potenzialità di Apache e dei files .htaccess.
Creiamo un lista di utenti autorizzati
Innanzitutto dovremo creare una lista di utenti autorizzati con relative password in questo formato (utilizza un normalissimo editor di testo):
utente1:passwordcriptata utente2:passwordcriptata utente3:passwordcriptata
Per criptare le password è possibile utilizzare il tools di Apache da riga di comando, utilizzando la seguente sintassi:
htpasswd –c /precorso_completo_e_assoluto/.htpasswd utente1
Una volta dato questo comando, verrà richiesto di inserire la password per due volte. In seguito il file .htpasswd verrà modificato con l’aggiunta di utente1 con relativa password correttamente criptata.
Oppure (molto più semplice) utilizza uno dei numerosi tools online, ad esempio questo:
https://www.4webhelp.net/us/password.php
Se lavori con Apache su piattaforma Windows dovrai invece per forza utilizzare il tool di Apache, altrimenti non funzionerà.
Salva ora il tuo file come .htpasswd (nessun nome – estensione htpasswd) e posizionalo in una cartella sicura e non leggibile del web server. Nel nostro caso, andrà benissimo la cartella stessa che intendiamo proteggere.
Verifichiamo il percorso assoluto della cartella pubblica
Verifica ora il percorso assoluto della cartella pubblica del tuo web server. Se sei in hosting il percorso potrebbe essere un po’ strano in quanto un unico web server gestisce molti siti tramite il sistema dei virtual host. Per verificare questo percorso, esegui il seguente script php, salvandolo nella root del sito e digitando l’url della pagina che contiene lo script:
<?php echo $_SERVER["DOCUMENT_ROOT"]; ?>
Il risultato potrebbe essere qualcosa del genere:
/home/virtual/virtual-site95/var/www/html/
Questa è la posizione della tua cartella pubblica. Ci serve conoscere questo percorso in quanto dovremo indicare con esattezza dove si trova il file .htpasswd.
Configuraimo il file .htaccess
Ora crea il file .htaccess che avrà questo formato:
AuthUserFile /home/virtual/virtual-site95/var/www/html/cartella_da_proteggere/.htpasswd AuthName AreaRiservata AuthType Basic require user utente1 require user utente2
Se hai già un file .htaccess nella cartella, aggiungerai semplicemente queste direttive a quanto contenuto nel file.
Come vedi è necessario indicare con AuthUserFile il percorso del file .htpasswd, che noi abbiamo posizionato nella cartella che intendiamo proteggere, la stessa dunque nella quale salveremo il file .htaccess.
Con AuthName possiamo stabilire un messaggo che apparirà nella finestra del login:
AuthType definisce il tipo di autenticazione. Oltre a “basic” abbiamo anche il tipo “digest“.
Nell’ultima riga infine diciamo che a quest’area sono ammessi gli utenti utente1 e utente2. Anche se utente3 fornisse la giusta password, non sarebbe ammesso.In questo modo possiamo utilizzare lo stesso file .htpasswd per diverse aree protette, e tramite il file .htaccess definire ad esempio che nella cartella “x” possono entrare tutti, mentre nella cartella “y” solo utente1 e utente2. Naturalmente la cartella “x” e la cartella “y”avranno al loro interno un file .htaccess diverso.
Nel caso in cui volessimo autorizzare tutti gli utenti presenti nel file .htpasswd, basta scrivere nell’ultima riga del file .htaccess:
require valid-user
Conclusioni
Se non hai necessità particolari, quello che abbiamo appena visto è un modo semplice e veloce per proteggere le tue cartelle.
28 commenti
Trackback e pingback
[…] non è così strano avere un IP statico. In caso potreste voler proteggere la cartella wp-admin realizzando un’area riservata…