Newsgroup: it.comp.www.php
Titolo: SEMI OT - proteggere cartella files

salve
ho un problema
Dunque io ho un cartella di nome documenti con dentro tanti documenti
supponiamo una struttura del genere
htttp://
www.sito.it/doc/.
..
dentro doc ho dei documenti cosě nominati
doc_1
doc_2
doc_n
questi documenti dal sito sono scaricabili tramite un link
ecco io vorrei che non potessero essere scaricati direttamente (accedento in 
maniera diretta all'indirizzo)  ma solo tramite lo script perchč
gli altri documenti appartengono ad altri user in pratica ogni user ha i 
suoi documenti,
mi chiedo come posso fare ?
Questo sistema dovrebbe funzionare anche con le immagini.
grazie ciao

 Questo sistema dovrebbe funzionare anche con le immagini.
Prima di tutto mettere dei documenti riservati in un sottodirectory 
della docroot del sito e' folle; intendo dire in un'area raggiungibile 
tramite il web.....
Detto questo, se proprio devi lasciarli la' e usi apache, proteggi la 
directory con un .htaccess (cosi' nessuno ci accede dal web...),
poi crei uno script che
- cambia l'header della pagina in octet-stream
- legge il file interessato
- ne sputa fuori il contenuto, in modo che parta il download
ovviamente, lo script deve capire quale file sputare fuori in base a un 
id univoco che gli passerai di volta in volta (passargli il nome mi 
sembra fuori luogo e insicuro ^__^ )
es:
download.php?id=jdsdjui823hj8
lh76

 mi chiedo come posso fare ?
Tramite la configurazione del webserver. Se hai apache e se è
configurato in tal senso, anche con .htaccess.
Il resto lo leggi nella documentazione del webserver.


Trami l'hash per i documenti a questa soluzione ci ho pensato anche io
ma come faccio per le foto ?
Non ho mai curato applicazzioni dal punto di vista security quindi su questo 
argomento sono a digiuno
sto comunque incominciando a sperimentare ora.

 ha scritto nel messaggio 
news:1131618807.2...@g14g2000cwa.googlegroups.com...
yag ha scritto:


mi documento. ma in pratica tramite apache posso dire
file_xx non può "essere preso" direttamente dall'url ? oppure a grandi linee
senza specifcare comandi cosa devo dirgli ?
grazie

 ma come faccio per le foto ?
Personalmente non ti seguo... la tua esigenza e' fare in modo che tizio1 
scarichi doc1, immagine1... e tizio2 scarichi doc2,immagine2... ?
----
~omar

 
usi le gd: tramite un script prendi l'immagine e la sbatti a video

 ha scritto nel 
messaggio news:4373246c$0$13267$4faf...@reader2.news.tin.it...

Si :-) 

 Si :-) 
Allora devi segnarti da qualche parte l'associazione tra il file e 
l'utente autorizzato al download.
Poi scrivi lo script download.php al quale passerai l'id del file che 
vuoi scaricare....
Lo script verifica che tu sia autorizzato e procede al download,
tutto questo usando l'header octet-stream per sputare fuori il file e le 
variabili di sessione (visto che sicuramente prima avrai provveduto a 
fare loggare l'utente...) per verificare che il file ti appartenga...
~omar

 ha scritto nel 
messaggio news:43732a66$0$16203$4faf...@reader3.news.tin.it...

Ok a questa soluzione per i documenti ci sono arrivato e quindi con e 
l'header posso
puntare anche fuori dalla directory web (spiegato un pò male ma mi sono 
capito da solo )
E per le immagini ? solo gd posso usare (non rallentano ? )
le ho usate poco... solo per piccoli test.
grazie

 senza specifcare comandi cosa devo dirgli ?
Puoi dire che in una determinata directory Apache ci fa accedere tutti,
nessuno o solo tizio e caio (autenticato).
Naturalmente lo script può leggere il suo contenuto in base ai
permessi che ha sul file system.

 le ho usate poco... solo per piccoli test.
Le immagini devi vederle nella pagina o scaricarle?
Per vederle nella pagina ti basta <IMG SRC=mostraimg.php?id=idimmagine>
con lo stesso controllo dei download (se l'id e' associato alla mia 
utenza la vedo...)
Le GD non servono, se il file da mostrare e' un'immagine ti basta 
mettere l'header image e fare un readfile() del file da mostrare...
~omar

 permessi che ha sul file system.
Sono d'accordo, l'unica cosa che aggiungerei e' che le autorizzazioni 
sarebbe meglio segnarsele in un db perche' altrimenti, in caso di molte 
utenze, risulterebbe piu' scomodo aggiornare l'htaccess, il file delle 
password o l'httpd.conf
Puo' usare apache con i moduli tipo mod_auth_db/pgsql/mysql...
~omar

 ha scritto nel 
messaggio news:43732e27$0$27599$4faf...@reader1.news.tin.it...

Qua mi son perso scusa l'immagine è visibile (o perlomeno) dovrebbe essere 
visibile come una
normale immagine dentro la pagina html (con funziona tasto destro attiva 
etc.)
(sempre se possibile)
--- 


infatti dicevo fra me gestire htaccess (le utente sono tante ) è un casotto 
vedo questi moduli
ma comunque non vorrei sbagliare ma mi pare
che :
1-per i documenti ho risolvo come abbiamo detto
2-per le immagini pure quindi l'autentificazione non serve
anche per se l'utente è logato ma l'utente web(quello che usa il sito)
non ha possibilità di conoscee il percorso in cui stanno le immagini
o sbaglio ?

 o sbaglio ?
Non ho ancora capito bene quello che vuoi fare per le immagini...
l'utente loggato <vede> nel sito le immagini o le scarica?
spiegami bene cosa devi fare e ti indico la mia soluzione...
~omar

 ha scritto nel 
messaggio news:43733452$0$16218$4faf...@reader3.news.tin.it...

Dunque la situazione è questa l'utente si logga (classica pagina 
login-password)
accede al suo pannello mette delle immagini e dei documenti
(tutto è anche memorizzato nel db tabella user record relativo allo user in 
questione)
un utente normale non registrato deve vedere "una" immagine ed "un" 
documento"
questi (soluzione ottimale) possono essere usati dalla pagina come 
normalmente si fa
-scaricare linkare ,vedere (per le immagini etc.)
quello che non voglio e che tramite appunto il riferimento all'indirizzo (ma 
mi pare che questo problema sia risolto)
possano accedere agli altri documenti ed alle altre foto (sullo foto vorrei 
dei chiarimenti) di quello user ma anche degli altri.
spero di essere stato più chiaro.
grazie ciao :-)

 (sempre se possibile)
Intendo un esempio del genere
http://www.omarsperanza.it/php/prova/esempio.html
<IMG SRC=mostra.php?id=123>
In base al valore di $_GET[id] mostra un'immagine oppure un'altra...
<?
header ('Content-type: image/gif');
if ($_GET[id] == '123') {
  readfile ('./vitello.gif');
}
else {
  readfile ('./tux.gif');
}
?>
http://www.omarsperanza.it/php/prova/mostra.phps
E' un esempio agricolo giusto per darti un'idea, visto che le immagini 
sono fisicamente presenti nel filesystem e' inutile passare per GD per 
generarne altre...
Ovviamente le immagini puoi sempre metterle fuori dalla docroot
readfile ('/path/dove/via/web/non/ci/accedi/vitello.gif');
~omar

 readfile ('/path/dove/via/web/non/ci/accedi/vitello.gif');
Ecco ora ho capito senti un ultimisssima domanda tanto sono tutti argomenti 
che andrň ad approffondire.
Potresti darmi piů chiarimenti riguardo a quei moduli e autentificazione
p.s
c'č un buon libro ita sulla doc di apache
grazie ciao

 Potresti darmi piů chiarimenti riguardo a quei moduli e autentificazione
Siamo OT.
Sono moduli standard che puoi aggiungere al tuo apache come si fa per 
tutti gli altri (mod_security, mod_layout...)
Io per postgresql uso questo
http://www.giuseppetanzilli.it/mod_auth_pgsql2/
So che esiste anche per mysql, solo che non l'ho mai usato
http://www.diegonet.com/support/mod_auth_mysql.shtml
In pratica puoi inserire delle direttive di auth nel tuo web server
indicando da quale db prendere i dati a seconda delle directory dove si 
trova l'utente web.
Normalmente l'autenticazione la si fa modificando il file delle password
con htpasswd via shell.
Pero' io quando vedo che gli utenti sono molti e devo fare modificare 
gli accessi a utenti  a cui non do accesso shell, preferisco dir loro di 
autenticare tramite questi moduli.
Cosi' si fanno le loro belle maschere sotto web e modificano il db degli 
accessi per fatti loro.
~omar

 ha scritto nel 
messaggio news:4373246c$0$13267$4faf...@reader2.news.tin.it...

Scusa sto provando ad accedere alla "root" non visibile ma tramite document 
root di $_SERVER vedo sempre a tutto da 
www.miosito.it
capisci ? cioč se in php devo specificare il di destinazione del file cosa 
uso ? tramite $_SERVER non ho trovato soluzione.
grazie ciao


Mi sono spiegato da cani:
Dunque dicevo tramite $_SERVER di php riesco ad accedere solo a qualcosa 
tipo
/home/web/
www.miosito.com/website
ma mai a
/home/web/
www.miosito.com
 <- qui dovrei mettere i miei file "nascosti" 
diciamo.
p.s
sto usando energit come host
grazie ciao

 sto usando energit come host
Devi chiedere a loro che politica usano per gli hosting.
~omar

 ha scritto nel 
messaggio news:438b29de$0$16214$4faf...@reader3.news.tin.it...

cacchio non ho alttra alternativa non esiste una soluzione "universale" 
spero sia chiaro universale
ciao

 spero sia chiaro universale
Non credo, ma esistono altri fornitori di hosting...
Io ad esempio sono abituato a mettere una dir /stikazi nella home ftp 
dell'utente...
quello che metti in /stikazzi finisce sul web... quello che metti fuori 
non e' raggiungibile via web....
~omar