Pagina 1 di 12 1 2 3 11 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 118
  1. #1

    [Pillola] Proteggere directory con htaccess

    Spero possa tornare utile a qualcuno, visto che non c'era nulla di "sistematico" nel forum.

    Introduzione

    Se hai un sito che contiene dei dati sensibili, come informazioni sui tuoi utenti, indirizzi email, documenti interni etc. ti sari sicuramente posto il problema di dove conservare questi file, in modo da escludere l'accesso a persone non autorizzate. Se il tuo sito è in hosting, è molto probabile che il server usi Apache

    Il modo più rapido per proteggere una directory tramite Apache consiste nell'implementare un'autenticazione via web. Htaccess è il metodo più comune, e verrà spiegato in questa guida.

    Requisiti

    Prima di continuare, assicurati di rispettare queste condizioni:

    il tuo webserver è Apache;
    puoi connetterti al server via FTP e telnet/ssh;
    conosci i comandi base per navigare all'interno delle directory del tuo server;
    riesci a stabilire il percorso assoluto delle directory;

    Il file .htaccess a nudo

    Htaccess è uno schema di autenticazione username/password che entra in gioco quando una determinata directory o un file vengono richiesti. Htaccess è un metodo di autenticazione "plain-text", il che vuol dire che username e password vengono inviati in semplice formato testo, non criptato. Sebbene ci siano molte poche possibilità che qualcuno intercetti i tuoi dati, l'autenticazione tramite htaccess è sicura quanto una connessione telnet o ftp.

    Per proteggere una directory del tuo webserver usando .htaccess, devi creare due file:


    .htaccess: questo file contiene le preferenze ed i dettagli riguardo ai metodi di autenticazione e i permessi per la directory.
    .htpasswd: questo file contiene una lista criptata di combinazioni di username e password che viene usata da Apache insieme al file .htaccess per concedere o negare l'accesso

    E' importante sottolineare che un file .htaccess presente nella directory /dir1 proteggerà anche tutte le sotto-directory di /dir1, come /dir1/sub1, a meno che non ci sia una coppia di file .htaccess e .htpasswd nella directory /dir1/sub1. Se ci fosse, questa varrebbe solo per /dir1/sub1 e tutte le sottocartelle (ad esempio /dir1/sub1/subsub1).

    Il file .htaccess funziona come uno script di configurazione, e fornisce ad Apache alcuni dettagli ed opzioni quando un utente viene autenticato. Con un editor di testi crea un nuovo file chiamato ".htaccess" (le virgolette potrebbero essere necessarie se usassi, ad esempio, blocknotes, per evitare che venga aggiunta l'estensione .txt). Inserisci il seguente testo nel file .htaccess:

    AuthUserFile /www/htdocs/secure/.htpasswd
    AuthGroupFile /dev/null
    AuthName "Directory Protetta"
    AuthType Basic

    <Limit GET>
    require valid-user
    </Limit>

    Come avrai notato, il file .htaccess è diviso in due sezioni, la prima parte per i dettagli di autentificazione e la seconda parte con i permessi per l'utente. Entriamo in dettaglio.

    AuthUserFile /www/htdocs/secure/.htpasswd

    Nella prima linea è indicato il percorso assoluto al file .htpasswd. Questo file contiene una lista di combinazioni di username e password che Apache userà per verificare tutti i tentativi di login (maggiori dettagli di seguito).

    Nell'esempio il file .htpasswd è localizzato nella directory /www/htdocs/secure. Devi cambiare questo percorso con quello della directory che vuoi proteggere. Per conoscere il percorso assoluto devi portarti via telnet/ssh nella cartella e dare il comando "pwd".

    AuthGroupFile /dev/null

    La seconda linea fa riferimento ad un file per l'autentificazione di gruppi. Questo potrebbe essere utile per separare gli utenti in gruppi distinti, come studenti e professori o staff e visitatori ad esempio. Siccome non ne faremo uso, indichiamo /dev/null, in modo tale da "avvisare" Apache che il file non esiste.

    AuthName "Directory Protetta"

    Nella terza linea, indichiamo quella che Explorer chiama "Area Autenticazione", come puoi vedere in questa immagine:



    Ovviamente puoi scegliere qualsiasi cosa. E' molto importante racchiudere il testo tra due virgolette (" e ").


    AuthType Basic

    La variabile AuthType imposta il tipo di autentificazione per la richiesta. Dato che stiamo usando una semplice autentificazione via web, la impostiamo su Basic. Altri valori possibili sono PGP e Digest.

    La seconda sezione del nostro file .htaccess, contiene le richieste e i metodi di risposta a cui gli utenti autenticati hanno accesso:

    <Limit GET>
    ...
    </Limit>

    Nel nostro file .htaccess consentiamo agli utenti autorizzati l'accesso a tutte le parti del sito in cui il metodo GET è permesso (in poche parole, gli utenti possono vedere una pagina, ma non possono compilare form etc). Altri limiti includono PUT e POST. Per ampliare le possibilità degli utenti, basta aggiungere PUT e/o POST nel primo tag, in questo modo:
    <Limit GET POST PUT>

    <Limit GET>
    require valid-user
    </Limit>

    Tra i tag <Limit> e </Limit>, possiamo inserire una lista di utenti a cui intendiamo concedere l'accesso alle cartelle protette, precendendo l'username con “require user”, ad esempio:

    require user giovanni
    require user pino
    require user mafalda

    In alternativa, (come ho fatto nel mio file .htaccess) si può garantire l'accesso a tutti gli utenti con l'esatta accoppiata username/password:

    require valid-user

    Questo è tutto quello che riguarda una semplice spiegazione del file .htaccess. Quando un utente non autenticato tenta di visitare la directory protetta, il file .htaccess viene caricato ed elaborato da Apache, che fa visualizzare la maschera per l'inserimento di username e password. Arrivati a questo punto non resta che aggiungere utenti alla lista delle persone autorizzate.

    Questo viene fatto tramite il programma htpasswd.

    Il file .htpasswd a nudo

    Il file .htpasswd è molto più semplice del file .htaccess, dato che può essere composto anche da una sola linea. In realtà è composto da una lista di coppie nome/valore, che rappresentano le combinazioni di username/password. Ogni combinazione di username/password è separata da un ritorno a capo e viene usata da Apache per determinare se un utente che tenta di accedere alla directory protetta esiste, e se la password che ha fornito è valida.

    Prima di creare il file .htpasswd, devi caricare sul server il file .htaccess (che abbiamo appena creato), nella directory che intendi proteggere. Questo può essere fatto con un qualsiasi client ftp. L'importante che l'upload avvenga in modalità ASCII.

    Per creare il file .htpasswd, dovrai connetterti al tuo server usando telnet/ssh.
    Una volta collegato, dovrai portarti nella directory che intendi proteggere, usando quindi il comando:

    cd /www/htdocs/secure

    Ovviamente /www/htdocs/secure varierà in base alla cartella che intendi proteggere.

    Ora dobbiamo eseguire il programma htpasswd. Questo è un semplice programma che accetta 3 parametri:

    htpasswd [opzioni] [file .htpasswd] [nuovo username]

    Per il primo parametro, useremo “-c”. Questo informa il programma che stiamo creando un nuovo utente. Per il secondo parametro, digiteremo “/www/htdocs/secure/.htpasswd” (oppure ".htaccess solamente, a patto di trovarci nella cartella /www/htdocs/secure). Per l'ultimo parametro, indicheremo il nome dell'utente che vogliamo creare, ad esempio "giovanni". Riassumendo, il comando per creare il nuovo utente giovanni, sarà il seguente:

    htpasswd –c /www/htdocs/secure/.htpasswd giovanni

    Dando il comando come indicato nella riga precedente (ovviamente sostituendo il percorso del file .htpasswd) ti verrà chiesto di digitare due volte la password che vuoi associare all'utente giovanni.

    Per aggiungere un altro utente, non sarà più necessario usare il parametro "-c" (che serve a creare il file .htpasswd). Il comando sarà quindi:

    htpasswd /www/htdocs/secure/.htpasswd mario

    Ovviamente si dovrà inserire due volte la password


    Questo è tutto il necessario per proteggere le directory! Possiamo controllare se il sistema funziona, aprendo il browser e collegandoci all'indirizzo corrispondente alla directory protetta. Si dovrebbe aprire un box in cui è possibile inserire username e password.

    Inserendo giovanni e la password che avevate digitato, e cliccando su ok, dovreste avere accesso alla directory /secure. Inserendo 3 o più volte un'accoppiata username/password volutamente errata, dovrebbe esservi impedito l'accesso, con un errore 401.

    Conclusioni

    Htaccess è uno dei metodi più popolari usato su server Apache perché è semplice e veloce da attivare e non richiede modifiche sostanziali ad Apache stesso.

    Come scritto precedentemente, le informazioni però vengono inviate al server in formato testo. Questo potrebbe andare bene se proteggi un sito personale. Tuttavia, se cerchi una protezione per un sito aziendale, dovresti cercare metodi più avanzati.

    Per qualsiasi domanda, segnalazione, bug o problema, scrivimi

    Dario

    P.S.: versione a colori della guida
    Anomalia grafica: una perdita di tempo

  2. #2
    Utente bannato
    Registrato dal
    Aug 2001
    Messaggi
    696
    Aggiunta:metallica

  3. #3
    E' possibile utilizzare questa protezione senza però definire dei file di password?

    Mi spiego.
    Io voglio che ci sia una directory i cui file non siano richiamabili via HTTP, ma accessibili solo attraverso FTP e includibili negli script PHP.
    Però, non volendo accederci da web, non me ne faccio niente degli utenti autorizzati e della password.
    Esiste quindi una versione "light" di questo metodo, si può?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    me la sono salvata...

  5. #5
    Originariamente inviato da skidx
    E' possibile utilizzare questa protezione senza però definire dei file di password?

    Mi spiego.
    Io voglio che ci sia una directory i cui file non siano richiamabili via HTTP, ma accessibili solo attraverso FTP e includibili negli script PHP.
    Però, non volendo accederci da web, non me ne faccio niente degli utenti autorizzati e della password.
    Esiste quindi una versione "light" di questo metodo, si può?
    Basta che fai l'upload in una directory superiore alla root.

    Mi spiego meglio.

    Il percorso assoluto del mio sito e' /home/nomeutente/public_html/

    Tutti i file che metto nella public_html sono raggiungibili, in un modo o nell'altro, via HTTP.

    Se pero' creo una directory /home/nomeutente/directory_segreta posso accedervi via ftp (dato che con un client mi collego di default a /home/nomeutente) e via script.

    In questo caso non avrai bisogno di proteggere con password la directory, dato che, per "definizione" non e' raggiungibile via HTTP.

    Questo pero' dipende da come e' strutturato il tuo webserver.

    Se hai altre domande, fammi sapere.

    Dario
    Anomalia grafica: una perdita di tempo

  6. #6
    Originariamente inviato da bubu sette sette
    Aggiunta:metallica
    Grazie
    Anomalia grafica: una perdita di tempo

  7. #7
    Originariamente inviato da dariottolo
    Questo pero' dipende da come e' strutturato il tuo webserver.
    Ecco, il problema è proprio questo.
    Il mio spazio è impostato affinchè possa lavorare solo dentro la document root.
    Quindi devo proteggere una cartella che sta là dentro.
    Tramite il pannello di controllo del mio hosting posso farlo senza scrivere una riga di codice, però mi ci mette sempre questo nome utente e password.
    Volevo sapere se era possibile fare anche senza, dato che non mi servono.

  8. #8
    Mi spiace, ma credo non si possa fare.

    Magari non sono riuscito a capire cosa intendi fare esattamente.

    Proteggere la directory tramite .htaccess &.htpasswd implica che qualcuno possa accedervi.

    Ho pero' fatto una prova. Cancella il file .htpasswd (o non crearlo per niente). Se provi ad accedere alla directory via browser, ti si presenta lo stesso la finestra per inserire username & password.

    Non essendoci la lista degli utenti autorizzati nessuno (nemmeno tu) potra' accedere alla directory.

    Spero sia quello che ti serve, altrimenti getto la spugna.

    Dario

    P.S.: il file .htpasswd lo cancelli via ftp o telnet/ssh
    Anomalia grafica: una perdita di tempo

  9. #9
    Originariamente inviato da skidx

    Ecco, il problema è proprio questo.
    Il mio spazio è impostato affinchè possa lavorare solo dentro la document root.
    Quindi devo proteggere una cartella che sta là dentro.
    Tramite il pannello di controllo del mio hosting posso farlo senza scrivere una riga di codice, però mi ci mette sempre questo nome utente e password.
    Volevo sapere se era possibile fare anche senza, dato che non mi servono.
    Ciao Skid,
    puoi proteggere l'intera directory proteggendo tutti i files in essa contenuti

    <Files ~ ".+">
    Order allow,deny
    Deny from all
    Satisfy All
    </Files>

    Chi tenterà di accedere leggerà

    "Forbidden
    You don't have permission to access /nome_directory/ on this server."

    La direttiva <Files> è molto versatile, puoi proteggere i singoli files e persino impostare la password soltanto per alcuni file come qui sotto

    AuthUserFile /percorso_htpasswd
    AuthName "Utente Registrato"
    AuthType Basic
    <Files ~ "\.(inc|txt)$">
    require valid-user
    </Files>
    per favore NIENTE PVT TECNICI da sconosciuti

  10. #10
    Grazie 1000 Fabio.
    Quindi se ho ben capito, mettendo questa scritta:
    <Files ~ ".+">
    Order allow,deny
    Deny from all
    Satisfy All
    </Files>

    dentro la mia cartella, dall'esterno non si potrà richiamare alcun file, ma io potrò icluderli nei miei script, giusto?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.