Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    PHP - Sicurezza Directory

    Salve a tutti,
    ho un'applicazione sviluppata in PHP in cui gli utenti possono visionare dei file .pdf.

    I pdf si trovano in www.miosito.it/docs/.
    Fin qui nessun problema, è possibile visionare i pdf tranquillamente.

    La questione fondamentale però riguarda il lato SICUREZZA, ovvero, un utente dev'essere autenticato per poter visionare i pdf in www.miosito.it/docs/ e può visionare solamente i propri pdf.

    Detto ciò, su Apache riesco a bloccare la visualizzazione della directory però non saprei come fare in modo che un utente autenticato possa visualizzare i propri pdf.

    Ogni consiglio è ben accetto!
    Grazie mille!

  2. #2
    Associ ad ogni pdf l'utente, il tutto lo inserisci in un db, poi nel momento in cui un utente clicca sul link del pdf, controlli se è veramente lui il proprietario del pdf e quindi lo mostri altrimenti no. Chiaro il concetto?

  3. #3
    Ho capito il contetto.
    Quindi all'interno della cartella /docs/ devo inserire un file .php che mi faccia il controllo?

    Non esiste un metodo che, senza inserire pagine php nella cartella, mi faccia il controllo e neghi l'accesso a utenti non autorizzati?

    Ad esempio, modificando il file di configurazione di Apache riesco a negare l'accesso a tutti gli utenti, o determinati indirizzi ip. Esiste qualche integrazione Apache + PHP in grado di controllare che l'utente sia autorizzato?

    Grazie mille!

  4. #4
    Non devi inserire alcuna pagina, basta che al momento del click ti fai un controllo se quel file è di quell'utente, se è suo allora mostri il file altrimenti no. Si tratta di fare un controllo di 5 righe di codice.

  5. #5
    e come faccio al click a fare il controllo? Potresti scrivermi un esempio di codice?

  6. #6
    Il problema è che se un utente, dopo essersi sloggato reinserisce "www.miosito.it/docs/miodoc.pdf" riesce sempre a vederlo ed in questo modo chiunque potrebbe farlo.

    Per questo chiedevo se esistesse la possibilità su Apache, di configurare i permessi di accesso ai file della directory, magari interfacciandosi con PHP per ottenere l'autenticazione.

  7. #7
    Ho trovato questa risorsa:
    http://web.tiscali.it/rocco.trainiti...ccessi_web.htm

    E' possibile far interfacciare Apache con Mysql per ottenere l'elenco degli aventi diritto a visualizzare determinate risorse.

    Il problema è che il mio cliente utilizza un .dbf

    Any suggestions?

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Ti conviene usare php, come suggerito da fdisotto...con apache la vedo troppo ingarbugliata, senza contare che devi avere un certo controllo del webserver, che se ti appoggi a hosting non hai.

    Per il problema che hai esposto, puoi risolverlo con la readfile di php o x-sendfile di apache (se il modulo è disponibile):

    1. Metti i file in una directory non pubblica (o protetta)
    2. Crei un script per il download del file

    es
    getFile.php?file=<id>
    Codice PHP:
    // Controlli se l'utente è loggato e se può scaricarlo, facendo una query sul DB
    if(<Se l'utente non è loggato> || <la query da 0 righe>){
         // L'
    utente non ha il permesso di scaricare il file
    }else{
        
    $file // riprendi il path completo del file dalla query di sopra;
        
    header('Content-Description: File Transfer');
        
    // Sarebbe più opportuno mettere il MIME giusto
        
    header('Content-Type: application/octet-stream');
        
    header('Content-Disposition: attachment; filename='.$file);
        
    header('Content-Transfer-Encoding: binary');
        
    header('Expires: 0');
        
    header('Cache-Control: must-revalidate');
        
    header('Pragma: public');
        
    header('Content-Length: ' filesize($file));


  9. #9
    Grazie sei stato utilissimo!

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