Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di strae
    Registrato dal
    Apr 2008
    Messaggi
    407

    Negare l'accesso al browser si alcuni file

    Ciao ragazzi, avrei la necessità di fare un'operazione un pò strana.

    Innanzitutto specifichiamo che utilizzo server Debian, apache2 (che 'corre' come user www-data)

    Allora, io ho dei semplici file di testo, con estensione .txt o .ini, oppure inventata, non importa.

    Questi file, sono posizionati in sottocartelle, con una struttura del tipo:

    www.example.com/folder1/auto/eccoilfile.txt
    www.example.com/folder1/moto/eccoilfile.txt
    www.example.com/folder1/pesce/eccoilfile.txt
    www.example.com/folder1/frutta/eccoilfile.txt

    quindi, il nome del file sempre lo stesso, idem per la 'gerarchia', cambia solo il nome della cartella.

    Quello che dovrei fare è (credo) relativamente semplice: io devo poter riuscire a leggere quel file da programmi sul server (python, php ad esempio), ma se digito www.example.com/folder1/auto/eccoilfile.txt devo ottenere un Forbidden, o qualunque cosa, ma non accedere al file.
    Sarebbe anche bello che anche accedendo via FTP quei file siano 'nascosti', o cmq non scaricabili (almeno che ci si colleghi con l'ftp e i dati dell'utente root)

    Come posso fare?

    Ho trovato in rete questo, da mettere nel file .htaccess:

    <Files file.txt>
    Order allow,deny
    Deny from all
    </Files>
    E sembra funzionare, ma solo se il file è nella cartella web root (www.example.com/miofile.txt), e non in sottocartelle.
    Inoltre, man mano che aggiungerò cartelle e quindi altri file, vorrei evitare di dover modificare di volta in volta il file htaccess.. non si può creare una regola, qualcosa del genere, che valga per tutti i file con dato nome, che stanno su http://www.example.com/cartellaConNo...NomeFisso.txt?
    You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
    I can accept failure, everyone fails at something - But I can't accept not trying.

  2. #2
    Strae, scusami se uso il tuo topic, ma mi sembra inutile aprire un topic nuovo per un'argomento simile. Faccio che postare qui la mia necessità.

    Ho uno spazio web con varie subfolder in una di queste (definita pippo), devo poter leggere il contenuto e poter utilizzare i file .mp3 con php ma gli utenti non devono poter scaricare direttamente questi file.

    Come posso configurare il file htaccess? (ne ho bisogno solo per questa cartella)

  3. #3
    Utente di HTML.it L'avatar di strae
    Registrato dal
    Apr 2008
    Messaggi
    407
    Originariamente inviato da goikiu
    Strae, scusami se uso il tuo topic, ma mi sembra inutile aprire un topic nuovo per un'argomento simile. Faccio che postare qui la mia necessità.

    Ho uno spazio web con varie subfolder in una di queste (definita pippo), devo poter leggere il contenuto e poter utilizzare i file .mp3 con php ma gli utenti non devono poter scaricare direttamente questi file.

    Come posso configurare il file htaccess? (ne ho bisogno solo per questa cartella)
    allora ti rispondo io: basta che metti il file .htaccess dentro la cartella, e dentro ci metti:

    <Files tuofilemp3.mp3>
    Order allow,deny
    Deny from all
    </Files>
    Se, come penso, hai N file mp3, potrebbero tornarti utili le regexp

    <Files ~ "\.mp3$">
    Order allow,deny
    Deny from all
    </Files>
    Altrimenti, potresti fare anche una cosa più figa renidirizzando il broser dell'utente a una pagina 404, in modo che sembri che ha sbagliato a digitare l'url e il file non esista (invece col forbidden gli confermi che esiste ma non può accederci):
    RedirectMatch 404 \.txt$
    Il mio problema però è che dovrei avere una regexp che lavora su tutti i file con un dato nome, in qualunque cartella si trovino.
    E invece questo metodo funziona solo per la cartella in cui metti il .htaccess (è scritto proprio nella documentazione di apache).

    Link utili:
    http://httpd.apache.org/docs/2.2/mod/core.html#files
    http://httpd.apache.org/docs/2.2/mod...tml#filesmatch

    Se qualcuno può aiutarmi, vi pregooooooo
    You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
    I can accept failure, everyone fails at something - But I can't accept not trying.

  4. #4
    @ strae

    usa filesmatch invece che la tilde sulla direttiva files
    http://httpd.apache.org/docs/2.2/mod...tml#filesmatch

    poi ti crei la regolina nell'htaccess della root del sito. Tutte le cartelle e le sottocartelle erediteranno le tue richieste.

    ciao

  5. #5
    Utente di HTML.it L'avatar di strae
    Registrato dal
    Apr 2008
    Messaggi
    407
    Originariamente inviato da StefanoC
    @ strae

    usa filesmatch invece che la tilde sulla direttiva files
    http://httpd.apache.org/docs/2.2/mod...tml#filesmatch

    poi ti crei la regolina nell'htaccess della root del sito. Tutte le cartelle e le sottocartelle erediteranno le tue richieste.

    ciao
    E quindi dopo vale anche per le sottodirectory?
    Scusa, forse è chiedere troppo e me ne rendo conto, ma mi scriveresti un esempio funzionante con 'nomefile.txt' ?
    Ho provato più volte a studiare le regexp, ma proprio non mi entrano in testa..
    E non sono espertissimo nella configurazione di apache, mi faresti davvero un grandissimo favore...
    You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
    I can accept failure, everyone fails at something - But I can't accept not trying.

  6. #6
    Originariamente inviato da strae
    E quindi dopo vale anche per le sottodirectory?
    Scusa, forse è chiedere troppo e me ne rendo conto, ma mi scriveresti un esempio funzionante con 'nomefile.txt' ?
    Ho provato più volte a studiare le regexp, ma proprio non mi entrano in testa..
    E non sono espertissimo nella configurazione di apache, mi faresti davvero un grandissimo favore...
    certo, vale per tutte le sottodirectory, a meno che queste non abbiano propri htaccess che ridefiniscano nuove regole. in questo caso, queste avrebbero -ovviamente- la priorità.

    Ecco un esempio facile facile (appena testato, da me funziona):

    <FilesMatch "\.(gif|jpe?g|png)$">
    Order allow,deny
    Deny from all
    </FilesMatch>

    questa sequenza, inserita nell'htaccess della root, blocca l'accesso a qualsiasi file grafico del sito: in pratica il visitatore non vedrà nessuna jpeg, jpg, gif o png.

    venendo a te: se vuoi che nessuno possa accedere ai file direttamente digitando la richiesta sul browser, e che questi siano invece accessibili solo dallo script, inserisci nell'htaccess della root:

    <FilesMatch "www.example.com\/folder1\/*\/*.txt$">
    Order allow,deny
    Deny from all
    </FilesMatch>
    Le espressioni regolari, per quanto ostiche, una volta capite sono potentissime. comincia ad allenarti ad esempio qui: http://rexv.org/


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 © 2025 vBulletin Solutions, Inc. All rights reserved.