Newsgroup: it.comp.www.php
Titolo: htaccess o php?

Ciao a tutti non so come devo fare.... sto diventando pazzo
Senza usare .htaccess è possibile con php proteggere il contenuto di diverse 
cartelle sul server che contengono file pdf  e permettere di scaricarli solo 
se si è autenticati? In pratica non voglio permettere di arrivare 
direttamente ai file contenuti nelle cartelle senza passare attraverso una 
autenticazione. Con .htaccess è semplice ma  sarebbe piu' comodo se si 
potesse arrivare a tali cartelle con le variabili che vengono 
dall'autenticazione. Altrimenti mi tocca creare un htaccess per ogni 
cartella e memorizzare i dati....Oppure è possibile scrivere al volo un 
.htaccess con fopen fwrite e scriverci dentro le variabili con le 
credenziali dell'autenticazione e ogni volta sovrascivere l'.htaccess?
Non so se sto dicendo cazzate.....
In parole povere devo poter permettere di scaricare il file pdf da queste 
cartelle solo a chi ha effettuato il login e non permettere ad altri di 
arrivarci con un indirizzo assoluto. Ho provato ad inserire i file pdf nel 
mysql ma occupano molto spazio e poi diverse volte non si visualizzano bene. 
Avete suggerimenti? Vi ringrazio in anticipo. 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 5672 (20101203) __________
Il messaggio è stato controllato da ESET NOD32 Antivirus.
www.nod32.it

> Avete suggerimenti? Vi ringrazio in anticipo.
Usare session()
ciao
Leo

 e non permettere ad altri di arrivarci con un indirizzo assoluto.
Se non vuoi usare htaccess e non hai accesso ad httpd.conf sarà 
impossibile impedire l'accesso diretto.
Leva i file dalla directory servita dal server HTTP e rendili 
disponibili solo tramite PHP.


La soluzione MySQL e' la migliore...occupano molto spazio che vuol dire? 
Ne occupano quanto ne occuperebbero "fuori" (certo, se poi hai un 
hosting con spazio illimitato e db no....)
E il fatto che a volte non si vedono bene non dipende da mysql ma da 
problemi di codifica molto probabilmente...
Comunque, perchè non proteggere con htaccess una cartella "root" e 
rendere disponibili i file tramite php? Mi spiego
www/sito/pdf e' protetta con htaccess, nessuno puo' entrare o fare 
qualsiasi cosa.
www/sito/files.php controlla se l'utente puo' vedere i pdf e se si
- Li copia da www/sito/pdf in una cartella temporanea e poi li cancella
- Ne legge il contenuto e lo invia al client come stream....

 problemi di codifica molto probabilmente...
bhè è anche un discorso di prestazioni: se hai un file sul db, devi
recuperarlo, leggerlo e spararlo fuori da php...
se lo hai sul filesystem devi solo spararlo fuori da php (volendo si
può saltare anche questa parte), non tocchi minimamente il database.

 - Ne legge il contenuto e lo invia al client come stream....
 si ma se io scopro la directory vedo tutti gli altri file delle altre
cartelle, perchè punto dritto, cmq sei stato l'unico che ha affrontato il
problema, per interderci come cazzo fa telecom a farmi vedere le bollette
senza che io possa arrivare dritto al file pdf , loro usano oracle e pagano
una cifra, invece io vorrei realizzare un sistema che se nn ti logghi nn
puoi vedere niente dalla directory, cioè proteggere anche i file dalla
cartella.... come cazzo si fa, secondo me bisogna scrivere sul file htaccess
e con PUT CONTENT di php creare sempre al volo il file HTACCESS che blocca
tutti se nn sei loggato, si puo' fare? htaccess rimane li' cosi' com'è e non
si accede se prima nn ti logghi e lo riscrivi...... mi sento impazzire ma
credo che si puo' fare. ciao e fatti sentire... 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 5674 (20101204) __________


 senza che io possa arrivare dritto al file pdf 
Stai dicendo a chiare lettere che è inutile risponderti, ti ho già 
suggerito la soluzione di come cazzo fa telecom e non c'è bisogno di 
copiare fisicamente i file su fs.

se si è autenticati?
Certamente. Qui sul newsgroup ci dovrebbero essere già una ventina di
script, che fanno tutti pressappoco la stessa cosa. Prova a googlarci
qualche parola chiave utile tipo:
	Header("Content-Type:
	readfile
	401 Unauthorized
	filesize
I file li metti in una cartella con un .htaccess che NEGA l'accesso a
chiunque, sempre. E quell'.htaccess non lo modifichi piu'. Uno script
fuori da quella cartella verifica l'autenticazione, e se del caso, ti
da' accesso ai file stessi.
Con mod_rewrite, puoi fare in modo che
 
http://www.tuosito.it/download/file.pdf
si traduca in realtà (anche se download/file.pdf ESISTE!) in
 
http://www.tuosito.it/download/index.php?file=file.pdf
senza che l'utente lo sappia o possa far niente per evitarlo.
index.php a questo punto effettua l'autenticazione via 401, controlla
i dati, e se sono giusti deduce il mimetype corretto, il filesize, l'
attachment mode, il BDTMVDP, tutto - fa un readfile() del file giusto
(il PHP può farlo nonostante l'htaccess) e lo manda.
Senza rewrite, devi usare direttamente un URL tipo
 
http://www.tuosito.it/download.php?file=file.pdf
Leonardo
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!

 diverse cartelle sul server
dipende dal grado di sicurezza che vuoi avere.
puoi mettere tutti i file in una cartella con nomi lunghi e complessi 
tipo sha512($nomefile.$salt).'.pdf' e inserire il $salt nel database al 
corrispondente id della tabella mysql
così l'utente chiederà il file pippo.pdf tramite l'url
www.sito.bip/down.php?name=pippo.pdf e non saprà dove si trova 
fisicamente quel file perchè solo il php saprà andarselo a pescare e lo 
restituirà solo se l'utente è loggato con i dovuti header adeguati.
la robustezza di tutto ciò risiede solo nel $salt.
Non lo consiglierei per siti di banche ovviamente... tutto dipende da 
cosa vuoi fare.
saluti

 restituir solo se l'utente loggato con i dovuti header adeguati.
Questo è il metodo "dei poveri" diciamo, se uno conosce (o indovina)
il nome del file lo scarica senza problemi.
Usare l'htaccess come suggerisce Leonardo Serni credo sia il metodo
migliore


sicuramente... č tutto relativo al progetto da costruire...

 cartelle, perchè punto dritto,
[CUT]
Ma guarda che se metti in una cartella un htaccess dove neghi l'accesso 
a tutti, hai risolto il problema.
/www/pdf ha il suo .htaccess con deny da tutti. A questo punto le 
cartelle figlie (cioè /www/pdf/blabla/lll/pippo.pdf) non sono 
accessibili da nessuno attraverso apache.
PHP invece può leggere e scrivere in quelle cartelle, e ti gestisce pure 
l'autenticazione...non vedo proprio il problema....


A me l'idea di dare i permessi di lettura/scrittura a php in giro per il 
disco non sembra proprio buona...poi non so se i provider di hosting 
offrano cartelle non servite dal web server...

 per questo c' il $salt da utilizzare...
il salt non ti cambia mica niente: se per un qualsiasi motivo scopro
la cartella dove tieni i pdf, provo tutte le combinazioni e mi scarico
tutti i file che sono nella cartella, ci metto del tempo ma è solo
questione di tempo, appunto.
Non è una soluzione, ma un trucchetto; come hai detto te dipende dal
tipo di progetto, per progetti molto piccoli dove se qualcuno riesce a
scaricarsi un file senza averne il permesso non muore nessuno, và più
che bene.

 questione di tempo, appunto.
Un po' come trovare una password di 40 caratteri :-D
ci vuole "molto" tempo.. forse troppo ;-)