Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [PHP]cartella file privata

    Salve
    vorrei che nel mio server ci fosse una cartella contente dei file che siano raggiungibili solo ed esclusivamente da utenti registrati e loggati.
    In oltre l'utente in questione può avere accesso ad un solo file.

    Se io do i permessi di scrittura ,lettura solo dal proprietario come faccio poi ad inviare i file al suo interno agli utenti che fanno richiesta?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Secondo me il modo più corretto per fare quello che chiedi sarebbe il seguente:

    1. Cartella files non visibile lato web, meglio se fuori dalla document_root, ma se non puoi almeno protetta con htaccess.
    2. Salvataggio su db del nome del file con riferimento all'id dell'utente proprietario. (volendo potresti anche mettere un id di collegamento ad un gruppo al quale poi farebbero riferimento gli utenti)
    3. Pagina php che verifica l'autorizzazione a leggere il file da parte dell'utente che lo richiede e se autorizzato generi i giusti header per dare poi in output il file letto tramite readfile

    Ciao

  3. #3
    Originariamente inviato da gianiaz
    Secondo me il modo più corretto per fare quello che chiedi sarebbe il seguente:

    1. Cartella files non visibile lato web, meglio se fuori dalla document_root, ma se non puoi almeno protetta con htaccess.
    2. Salvataggio su db del nome del file con riferimento all'id dell'utente proprietario. (volendo potresti anche mettere un id di collegamento ad un gruppo al quale poi farebbero riferimento gli utenti)
    3. Pagina php che verifica l'autorizzazione a leggere il file da parte dell'utente che lo richiede e se autorizzato generi i giusti header per dare poi in output il file letto tramite readfile

    Ciao
    si potrebbe essere una soluzione!

    io invece ho messo che i permessi di quella cartella siano solo ed esclusivamente del proprietario, quindi nessuno può accedervi, o è meglio usare un file .htaccess?

    Poi avevo pensato di inviare il file richiesto (Così facendo le richieste di scaricare il file può effettuarle solo chi ha effettuato l'accesso al sito, quindi si è loggato ed ho a disposizione solo quel tipo di file da richiedere, dato che nessuno può conoscere il contenuto della cartella downloads/ ) tramite un ftp_get.

    potrebbe andare questa soluzione?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da Whitecrowsrain
    si potrebbe essere una soluzione!

    io invece ho messo che i permessi di quella cartella siano solo ed esclusivamente del proprietario, quindi nessuno può accedervi, o è meglio usare un file .htaccess?
    Ma non ho capito, l'upload avviene via ftp?

    In secondo luogo devi tenere presente che a leggere il file non è il proprietario, bensì l'utente con cui gira il web server.

    Poi avevo pensato di inviare il file richiesto (Così facendo le richieste di scaricare il file può effettuarle solo chi ha effettuato l'accesso al sito, quindi si è loggato ed ho a disposizione solo quel tipo di file da richiedere, dato che nessuno può conoscere il contenuto della cartella downloads/ ) tramite un ftp_get.

    potrebbe andare questa soluzione?
    In questo caso io gestirei il download tramite id di collegamento al nome del file (la tabella in cui ti dicevo di memorizzare il nome del file e il proprietario).
    A questo punto se come collegamento usi l'id, devi effettuare qualche tipo di controllo, altrimenti nessuno mi vieta leggendo l'url di richiesta di provare a cambiare l'id per vedere il file di un altro utente.

    Ciao

  5. #5
    Originariamente inviato da gianiaz
    Ma non ho capito, l'upload avviene via ftp?
    si ho penato che così fosse più sicuro

    Originariamente inviato da gianiaz
    In secondo luogo devi tenere presente che a leggere il file non è il proprietario, bensì l'utente con cui gira il web server.
    infatti l'utente che gira nel web non deve leggere il file lo deve scaricare e basta.
    quindi glie lo invio con una connessione ftp con il get

    Originariamente inviato da gianiaz
    In questo caso io gestirei il download tramite id di collegamento al nome del file (la tabella in cui ti dicevo di memorizzare il nome del file e il proprietario).
    A questo punto se come collegamento usi l'id, devi effettuare qualche tipo di controllo, altrimenti nessuno mi vieta leggendo l'url di richiesta di provare a cambiare l'id per vedere il file di un altro utente.
    Ciao
    con la cartella messa con i diritti di lettura, scrittura ed esecuzione solo al proprietario nessuno può scaricare nulla al suo interno.

    Spero di aver chiarito tutti i punti..
    Alla luce di questo, secondo te il sistema funziona?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da Whitecrowsrain
    si ho penato che così fosse più sicuro


    infatti l'utente che gira nel web non deve leggere il file lo deve scaricare e basta.
    quindi glie lo invio con una connessione ftp con il get
    ora ho capito

    Credo che sia un sistema come un altro, se non per il fatto che a quanto ho capito il web server deve instaurare una connessione ftp con se stesso per poter scaricare il file.
    Sinceramente non so se questo può portarti altri problemi, tipo numero di connessioni con il server ftp o addirittura appesantimento del processo.. infondo il file è in locale, potresti leggerlo direttamente.

    Comunque non dico che non vada bene come soluzione, mi lascia solo un po' perplesso, ma può essere che sia pure migliore...

  7. #7
    Originariamente inviato da gianiaz
    ora ho capito

    Credo che sia un sistema come un altro, se non per il fatto che a quanto ho capito il web server deve instaurare una connessione ftp con se stesso per poter scaricare il file.
    Sinceramente non so se questo può portarti altri problemi, tipo numero di connessioni con il server ftp o addirittura appesantimento del processo.. infondo il file è in locale, potresti leggerlo direttamente.

    Comunque non dico che non vada bene come soluzione, mi lascia solo un po' perplesso, ma può essere che sia pure migliore...
    ho capito il tuo punto di vista.
    in effetti in upload il server fa una connessione ftp con se stesso, quindi sarebbe meglio usare move_uploaded_file al posto di ftp_put?

    invece per quanto riguarda il download visto che non è una richiesta con un form va bene l'uso della connessione ftp? oppure tu useresti quel readfile? e come lo gestiresti, cioè fammi un esempio di codice se puoi!
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    aspetta, forse non ti seguo ancora.

    Quando il client fa l'upload ha 2 scelte:

    1. tramite il form http che gli offri tu (e allora si può usare move_uploaded_file) ma devi essere tu tramite un chown sul server poi a dare i permessi corretti al file, perchè in quel caso a scrivere il file sul disco è il web server

    2. tramite ftp con un client che permetta l'accesso alla propria cartella sul server, in quel modo inserendo username e password nel client il proprietario verrà settato correttamente dal server ftp (qui però dovrai fare in modo che l'umask crei il file con i permessi che vuoi).

    Nel caso dell'upload, php non può fare una connessione ftp, perchè le parti in causa sono

    Web server - Server FTP - Client

    E tu al massimo puoi connetterti dal webserver al server ftp.

    Nel caso invece del download puoi usare il metodo di connessione via ftp da parte di php per andare a prelevare il file dell'utente dalla sua directory, e poi fornirlo al client tramite il browser.
    E in questo caso manifestavo le mie perplessità, perchè il webserver dovrebbe connettersi all'ftp server, e anche se questo avviene in locale introduce comunque dei tempi di ritardo e un processo in più da gestire da parte del server.

    In linea di massima io scarterei questo metodo di gestire i files, se ci metti un po' di attenzione puoi fare tutto in php.

  9. #9
    Originariamente inviato da gianiaz

    In linea di massima io scarterei questo metodo di gestire i files, se ci metti un po' di attenzione puoi fare tutto in php.
    quindi per l'upload (operazione che farà solo l'amministratore del sito) va bene connettersi al server ftp.
    infatti con i permessi settati in quella maniera non posso uploadare il file con move_uploaded_file.

    Mentre per il download ( operazione per gli utenti loggati) cosa mi posso inventare?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Il punto è che se fai l'upload via ftp assegnando i permessi all'utente l'unico modo per gestire il download è usare una connessione ftp interna come suggerivi tu.

    L'alternativa è gestire il tutto come ti segnalavo nel primo messaggio..

    ciao

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.