Newsgroup: it.comp.www.php
Titolo: Protezione cartella per uploads

Ciao a tutti,
dovrei progettare una specie di content management system personalizzato per
un'azienda. Mi trovo difronte ad un dubbio di carattere tecnico. Dunque,
l'applicazione girerà su un server interno dedicato allo scopo su cui
installerò linux. Il sistema dovrà dare la possibilità agli utenti che si
loggano con password di fare l'upload di documenti di vario genere. Gli
utenti inoltre dovranno avere la possibilità di visualizzare una lista dei
documenti presenti sul server e scaricarli in locale se necessario. Per
quanto riguarda la tecnica di upload utilizzerò POST.
Arrivo al punto: per dar possibilità di linkare i documenti messi sul server
e quindi di farli scaricare, la cartella di upload dovrà essere dentro la
cartella www... Come fare per limitare l'accesso alla cartella sul server,
visto che deve avere per forza 777 come permessi?
Spero di essere stato chiaro.
Ciao
Brunix 

visto che deve avere per forza 777 come permessi?
Che cosa vuoi limitare?
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it

 ha scritto nel messaggio 
news:acrf221tjvfu54ukp...@4ax.com...

Ciao,
voglio evitare che chiunque possa mettere mano sul server e prendersi tutti 
i documenti dell'azienda senza problemi...
ciao
Brunix 

i documenti dell'azienda senza problemi...
Sei tu l'amministratore del server?


 ha scritto nel messaggio 
news:bsrf225p11m7p6nm5...@4ax.com...

Sarò io solo per il periodo di prova. Dopo sarà l'amministratore di rete 
dell'azienda. 

 
Se non ci riesci....ti consulizzo volentieri.
-- 
Cordialmente.
Melus.
dal mio e-mail togli i simboli di Zorro.

dell'azienda. 
Controlla con che utente gira su server Apache ed imposta i permessi
in modo che solo questo utente possa accedere alla cartella.


 ha scritto nel messaggio 
news:OuWVf.35376$nz4....@tornado.fastwebnet.it...

La cartella deve avere per forza i permessi 777 perchè altrimenti apache non 
riesce a scriverci i file dentro...
Certamente userò un db, ma questo non elimina il problema della sicurezza in 
quanto se una persona mette le mani sul server puo prendere tranquillamente 
tutti i documenti che vuole...
ciao
Brunix 

 ha scritto nel messaggio 
news:vvcg22t859o52hct4...@4ax.com...

In che senso.. come faccio?

In che senso.. come faccio?
se non hai capito, chiedi all'amministratore di rete...è una questione
di utenti, gruppi e permessi, e se è già discusso in passato.


tutti i documenti che vuole...
non necessariamente, perchè i permessi utente di mysql sono diversi
dai permessi utente linux...memorizzando i documenti direttamente nel
db e limitando opportunamente gli accessi al server mysql (e scrivendo
codice PHP sicuro), ottieni un sistema sicuro da accessi non
autorizzati.



Questo mi interessa: io infatti non vorrei che chi digita il percorso della 
cartella dei documenti, e becca il nome del file, possa scaricarlo o 
aprirlo.
Cosa consigli di fare? 

Brunix ha scritto:

Forse devi capire meglio come funziona il meccanismo dei permessi con unix.
Controlla la configurazione di apache, quale utente viene usato.
Se la cartella è di proprietà dello stesso utente che fa girare apache, 
non devi avere i permessi 777.
puoi creare un gruppo di lavoro e far girare apache con un utente di 
quel gruppo già cosi potresti usare i permessi 770 o 750.
E il DB server  non necessariamente deve essere lo stesso che fa girare 
il webserver.
Inoltre puoi criptare il contenuto dei file e mettere la chiave in file 
PHP compilato con Zend. Anche se ti pappano il DB, senza la chiave per 
decriptare i dati non se ne fanno nulla.
....se ne possono fare di cose....


Armand Federico ----------- ha scritto:

Con PHP non sei legato alla gerarchia di directory del webserver.
Quindi con le funzioni di gestione dei file, puoi mostrare il contenuto 
di una directory ovunque sia.
Solo tu sai che i dati si trovano nella directory /proprio/qui/
quando generi l'elenco dei file, ci sono mille modi per farlo, ma in 
linea di massima potresti creare un link per ogni file associando questi 
ultimi a delle stringhe casuali tenute in variabili di sessione e 
associate ai nomi di file e rigenerate dinamicamente ad ogni chiamata 
della pagina che ti mostra l'elenco dei file.
il tuo script chiappailfile.php
che funzionerà solo se l'utente si è gia loggato,
funzionerà solo se lo chiami in questo modo:
chiappailfile.php?questofile=fbkrwelhkfh434534kb5
dove la variabile questofile sarà diversa per ogni file ovviamente.
se ti inventi una variabile non funziona.
se lo chiami senza variabile non funziona.
se trova l'associazione variabile-file lo script semplicemente lo legge 
  dalla sua posizione e lo manda in output con gli header giusti per 
fare un download o per mostrarlo a video o per fare quello che ti pare.
Scusa la sintesi.
Se non ti è chiaro fammi sapere.


 ha scritto nel messaggio 
news:DSdWf.37321$nz4...@tornado.fastwebnet.it...

Ciao,
ricapitolando il tutto, sono stato a vedere un po come risolvere il problema 
ed effettivamente mettendo una cartella 'uploads' all'interno della cartella 
'www' posso linkare i documenti presenti dentro uploads da una pagina del 
sito contenuto in www. Poi ho reso la cartella uploads di proprietà di 
apache così che ci possa accedere solamente il server web. Sono quindi 
riuscito a risolvere il problema originale.
Adesso un altro problema: tu dici che posso avere la cartella upload dove 
voglio nel filesystem, tanto con le funzioni di php posso rintracciarla, 
però come faccio a linkare un documento presente al suo interno da una 
pagina, in modo che un utente clicchi su 'scarica' e si apre la finestra di 
download o si visualizza il documento?
grazie
ciao
Brunix 

download o si visualizza il documento?
Lo apri in lettura e poi lo invii al browser tramite opportuni
header...trovi numerosi esempi di codice nel manuale sotto la funzione
header() oppure in passate discussioni nel ng.
