Come modificare l’accesso ai file ed alle cartelle?
Se vuoi incrementare la sicurezza del tuo sito, dovrai fare un’attenta analisi di ciò che vuoi mostrare a livello di accesso diretto. Grazie ai files .htaccess dei quali abbiamo già parlato in precedenti articoli, è possibile bloccare l’accesso diretto a file o cartelle. Le procedure che vedremo a livello basilare ti permetteranno di definire un livello di sicurezza personalizzato.
Come bloccare l’accesso ad una cartella?
Se non é stato applicato un blocco di accesso alle cartelle, digitando ad esempio l’url www.tuosito.com/images, vedrai un risultato del genere:

Se invece intendiamo impedire la visualizzazione del contenuto di una cartella, dovremo procedere come segue.
Creiamo il file .htaccess o, se già esiste, aggiungiamo queste direttive:
Deny From All
e salviamolo nella cartella che intendiamo bloccare.
Ora, tentando di accedere alla cartella digitando l’url, otterremo questo risultato:

È importante sapere che viene bloccato unicamente l’accesso diretto. Se il file é richiesto da una pagina che risiede sul server, non verrà applicata nessuna restrizione. Ad esempio se in una pagina html abbiamo questo codice:
<img src="images/immagine.jpg">
anche se la cartella images é bloccata la pagina html mostrerà comunque l’immagine.
Analizziamo ora il file che abbiamo scritto.
Deny, allow, questo é il dilemma
Deny e Allow sono le direttive che abilitano o negano l’accesso diretto ad una cartella e possono essere combinate tra loro
Deny From All Allow From www.yourinspirationweb.com
Questa dichiarazione impedisce l’accesso a chiunque, ma lo abilita alle richieste provenienti dal dominio di yourinspirationweb.com
Vediamo ora alcuni esempi di come si può definire l’accesso ad una cartella:
Deny From All (blocca tutti) Deny From All Allow From 127.0.0.1 (abilita unicamente l'accesso diretto da locale - 127.0.0.1 è l'IP di localhost) Deny From All Allow From 45.17 (abilita per gli IP che iniziano con 45.17) Deny From 45.17.22.0/100 (blocca per il range di IP compresi tra 45.17.22.0 e 45.17.22.100) Deny From .com .net (blocca dai domini con estensione .net e .com)
Infine é possibile agire sui file specifici con la seguente sintassi
<Files ~ "espressione regolare"> direttive </Files>
Se ad esempio volessimo permettere l’accesso ad una cartella, ma vietare la visualizzazione dei file con estensione .txt e .gif, potremmo scrivere qualcosa del genere
Allow From All <Files ~ "\.(txt|gif)$"> Deny From All <Files>
Conclusione
In questo breve articolo abbiamo visto come sia possibile configurare Apache in modo tale da nascondere/bloccare files e cartelle. Queste procedure evitano sguardi indiscreti nei nostri siti aumentandone implicitamente la sicurezza. Hai mai utilizzato queste direttive per impedire accessi non autorizzati ad alcune sezioni del tuo sito?
18 commenti
Trackback e pingback
Non ci sono trackback e pingback disponibili per questo articolo
Innanzi tutto, complimenti (come sempre) per la chiarezza dell’articolo!
Ma se io non voglio semplicemente far vedere il contenuto di quella cartella, fa differenza mettere soltanto un index.html vuoto?
vedo che in molte piattaforme usano questa tecnica.
Ciao Antonio e grazie.
Mettere un index.html vuoto é una prevenzione minima. E’ utilizzato appunto da diverse applicazioni in quanto chi le installa, normalmente, non ha competenze per procedere ad una configurazione degli accessi tramite .htaccess o chmod.
(a questo proposito ricordo YaBB, un forum sviluppato in perl, che una volta installato necessitava di impostare il giusto chmod per ogni file e per ogni cartella).
La soluzione con l’index.html vuoto, evita unicamente che si possa vedere il contenuto di una cartella.
http://www.tuosito.com/cartella
Caricherà l’index.html vuoto e dunque non mostrerà nulla. Ma se io so che in quella cartella c’é il file file.txt, digitando l’url
http://www.tuosito.com/cartella/file.txt
Visualizzerei il contenuto di questo file (non é detto che sia grave, ma comunque…)
Questo non avviene invece impostando i permessi tramite .htaccess, diciamo che é un livello di protezione più avanzato.
Ecco perfetto, ora ho ben chiara la situazione!
Grazie :)
Devo dire che non sono molto ferrato in materia. Grazie per l’articolo.
Devo dire che mi interesserebbe molto un articolo sulla sicurezza in wordpress
Ciao Francesco.
WordPress, come tutte le principali applicazioni, è curato nella sicurezza. Ma come tutte le applicazioni Open Source, proprio perchè è possibile vedere il sorgente, sono a volte oggetto di attacchi basati su buchi scoperti proprio analizzando il codice.
Per questo è importante fare gli aggiornamenti nei quali sono contenute le correzioni di eventuali buchi scoperti.
Più di questo non so quali altri accorgimenti potrebbero essere utili.
Posso dirti che di solito i bug principali sono gli utenti. Non immagni quanti pannelli amministrativi (non solo WP) si aprono con username:admin password:admin !
Magari Nando o Nicolas che ne sanno più di me su WP possono risponderti più diffusamente.
Si, in realtà esistono dei piccoli accorgimenti che possono essere presi in considerazione per aumentare ulteriormente la sicurezza di WordPress. Più in la vedremo di farci un articolo.
Ciao Maurizio.
Articolo assolutamente d’oro, la protezione delle cartelle del proprio sito è vitale e l’utilizzo delle clausole allow e deny è la pietra di base su cui si appoggia l’intero discorso. C’è un’annotazione che ti aggiungo: le protezioni sull’.htaccess funzionano per gli accessi tramite browser, ma non proteggono files e directory dall’apertura di files tramite PHP del sito. Non è una debolezza, quanto una caratteristica che dobbiamo conoscere scrivendo PHP e che possiamo sfruttare a nostro uso e consumo per aumentare la sicurezza stessa del sito.
Ciao Cristian. Giustissimo, infatti all’inizio dell’articolo dico esplicitamente Se il file é richiesto da una pagina che risiede sul server, non verrà applicata nessuna restrizione.
Questa è una ragione in più per prestare molta attenzione alle vulnerabilità RFI e LFI che immagino tratterai nel tuo corso sulla sicurezza.
Complimenti per l’articolo davvero molto interessante come sempre proponente articoli utili, e ben spiegati, volevo però chiedervi, riguardo i file .htaccess come è possibile abilitare richieste provenienti non solo da un dominio ma da una o più pagine web specifiche;
esempio abilitare richieste provenienti solo da pagine come http://www.nomedominio.com/dir/nomefile.php
http://www.nomedominio.com/dir/nomefile2.php
Grazie
Se le pagine sono presenti sul server, sono sempre abilitate.
Se le pagine sono su un altro server, non so. Nel senso che dovrei fare una prova. La documentazione di apache parla unicamente di abilitare il dominio
(allow from http://www.nomedominio.com)
prova a scrivere
allow from http://www.nomedominio.com/dir/nomefile.php e vedi se funziona
Ciao, articolo ben fatto tutavia la procedura indicata non funziona nel mio caso e sinceramente non capisco come mai:
nella document root del mio sito ho un file test.php
che contiene
come da articolo nella cartella images ho posizionato un file .htaccess con dentro
Deny From All
Allow From http:///test.php
(preciso che ho provato anche solo deny from all e allow from 127.0.0.1, insomma tutte l combinazioni)
Non funziona, anche su hosting diversi … qualche idea ?
Ciao e Grazie
D
iniziamo con il dire che se hai posizionato test.php nella document root, il suo indirizzo non sarà
http:///test.php
ma
http://localhost/test.php
La direttiva allow from non viene usata per abilitare un file, ma per abilitare una provenienza della richiesta.
allow from http://localhost/test.php
ha poco senso
Ciao, smanettando e cercando mi sono imbattuto nel tuo sito e ovviamente inizio con i complimenti, la chiarezza è il tuo forte, bravo.
Ora il quesito per cui sono arrivato qui:
Ho un sito e permetto a utenti la creazione di cartelle private e il caricamento in esse di propri file, tipo storagefile, lasciando inalterato il fatto che possano caricare file con qualunque estensione, come posso impedire, tramite .htaccess che qualche “buontempone” ci carichi un file malevolo in php e che poi lo esegui direttamente da Browser copiandone l’indirizzo nella barra?
La protezione dovrebbe essere estesa anche a sottodirectory.
Forse mi sono “incartato” nello spiegare il quesito, ma sono sicuro che hai inteso perfettamente l’aiuto che chiedo.
Ti ringrazio sin da subito per un tuo aiuto
Perchè nel mio caso con “Deny From All” vengono bloccate anche le richieste dalle mie pagine?
E tra l’altro se scrivo “Allow From http://www.miodominio.com” non succede nulla… Continua a bloccare anche le richieste delle mie stesse pagine.
Ciao io avrei lo stesso problema esposto dall’ultimo utente mi blocca tutto, sono su un dominio aruba c’entra qualcosa? il server e linux
Ciao io avrei lo stesso problema esposto dall’ultimo utente mi blocca tutto, sono su un dominio aruba c’entra qualcosa? il server e linux
Scusa ma questo metodo che tu spieghi funziona anche per non farle scaricare?
cioé ti spiego, ad esempio se uno apre un sito web e vuole accedere alla struttura di un sito web, basta che apre firefox e quindi da file clicca “salva pagina in ” e scarica tutta la struttura della pagina compresa la cartella da cui dipende il contenuto.
Ecco questo é un’altro problema che mi irrita. il disattiva mouse per proteggersi dal copy purtroppo non serve a nulla.
Ciao Maurizio, non capisco due cose:
1) a che serve bloccare una cartella se un file visibile in rete lo puoi prendere cmq? basta schiacciare tasto destro del mouse e fare “visualizza imagine” e poi “salva immagine con nome”.
Per dire tanto il contenuto lo si può sempre prelevare.
2) Poi un’altra cosa, ma bloccare l’accesso ad una cartella evita di far scaricare la cartella dal browser? non so se mi spiego, se io voglio copiare ad esempio la struttura di un sito, basta che vado su “file” del mio browser e faccio “salva pagina con nome” e quindi mi salva la pagina compresa la cartella col contenuto.
Quindi a che serve bloccare l’accesso a cartele se tutto é cmq reperibile?