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

    Eseguire il download di un file da una cartelle protetta con .htaccess

    Come posso scaricare un file con PHP in una cartella protetta da .htaccess con le seguenti direttive:
    codice:
    RewriteEngine On
    <Files *>
    Deny from all
    </Files>
    Non ditemi che è impossibile perché WordPress usa lo stesso file per proteggere i download non autorizzati.
    Più pratica in futuro...

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    E' un sito tuo a cui hai accesso e puoi mettere mano al codice oppure è un sito su cui non hai controllo?

  3. #3
    E' un sito su cui ho controllo al 100%! Perché mi chiedi questo?
    Più pratica in futuro...

  4. #4
    Alhazred, non hai nessuna soluzione per questo mio quesito? Sono costretto a ricorrere ad un CMS? Non posso replicare tutto via codice PHP?
    ciao
    Più pratica in futuro...

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Puoi usare la readfile()
    Il primo esempio è quello che cerci

  6. #6
    Quote Originariamente inviata da boots Visualizza il messaggio
    Puoi usare la readfile()
    Il primo esempio è quello che cerci
    Grazie boots, gentilissimo.
    Ho realizzato lo script ma ho alcune domande:
    1.E' possibile utilizzare la funzione readfile() nello stesso file in cui è presente il pulsante per il download?
    Al momento ho risolto in questo modo:
    codice HTML:
    <form action="download_file.php" method="post" accept-charset="utf-8"> File 1: <strong>DOCUMENTO_PRIVATO.docx</strong> (11.85 KB) 
    <input type="hidden" name="file" value="download_protetti/DOCUMENTO_PRIVATO.docx">
    <input type="submit" value="Download file">
    </form>
    ma non mi piace molto perché sono costretto ad usare 2 file per fare una cosa molto semplice.
    2.Quali di questi header rendono la mia applicazione meno sicura e dovrei rimuovere?
    Codice PHP:
        header('Content-Description: File Transfer');
        
    header('Content-Type: application/octet-stream');
        
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
        
    header('Expires: 0');
        
    header('Cache-Control: must-revalidate');
        
    header('Pragma: public');
        
    header('Content-Length: ' filesize($file)); 
    3.Quali header aggiungereste per incrementare la sicurezza della mia applicazione?
    4.Cosa devo scrivere nel file .htaccess per incrementare la sicurezza della mia applicazione?

    P.S.:

    Questo codice non funziona e non so perché:
    Codice PHP:
    <form action="<?php ScaricaFile();?>" method="post" accept-charset="utf-8">
    ScaricaFile() è la funzione che contiene readfile().
    Ultima modifica di giannino1995; 30-03-2018 a 20:39
    Più pratica in futuro...

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Partiamo dal "PS", perchè mi pare che non hai ben capito come funzionano le cose:
    PHP "gira" sul server e il suo output viene inviato come risposta http alla richiesta del client. Come puoi capire il client ed il server comunicano attraverso questo meccanismo di request-response. Va da se che non ci può essere un "collegamento" diretto tra la pagina e una funzione/oggetto php...visto che non c'è più un contesto php
    Nel tuo esempio ScaricFile() viene eseguita al momento della richiesta e non certo al submit della form, anche perchè la tua pagina come action ha il risultato della funzione (probabilmente nulla, visto che non è definito il file da scaricare).

    Invece il primo esempio è corretto, perchè la action porta su una pagina php. E si..ti servono due file:
    - Quello dove mettere il form/link per effettuare il download
    - Quello che effettivamente ti fa il download

    Per quanto riguarda gli header...quelli son inviati dal server al client quindi non avrai nessun problema legato alla sicurezza, mentre nel .htaccess basta che inserisci le direttive per negare l'accesso hai file

  8. #8
    1.Ok, mi accontento;
    2.Ok, lascio questi;
    3.Ok, non mi faccio altre "pippe" mentali;
    4.Qui vorrei una precisazione perché non conosco le direttive .htaccess e ho copiato il file da WordPress. Per esempio non capisco se devo scrivere:
    codice:
    Deny from all
    oppure come su WP:
    codice:
    RewriteEngine On
    <Files *>
    Deny from all
    </Files>
    Entrambi funzionano. Se digito ".../download_protetti/DOCUMENTO_PRIVATO.pdf" sul browser ottengo:
    Forbidden
    You don't have permission to access .../download_protetti/DOCUMENTO_PRIVATO.pdf on this server.
    Più pratica in futuro...

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Guarda, non sono un esperto su htaccess, ma credo che nel primo caso non fai distinzione su file/cartelle/altro. Con <Files> puoi "limitare" le direttive solo ai files (e anche il tipo).

    Per quanto riguarda la sicurezza, quello che vorrei suggerirti è di validare il nome del file in modo da evitare che giochino con i ".." (directory padre) e ti vadano a leggere file che non dovrebbero

  10. #10
    Quote Originariamente inviata da boots Visualizza il messaggio
    Guarda, non sono un esperto su htaccess, ma credo che nel primo caso non fai distinzione su file/cartelle/altro. Con <Files> puoi "limitare" le direttive solo ai files (e anche il tipo).

    Per quanto riguarda la sicurezza, quello che vorrei suggerirti è di validare il nome del file in modo da evitare che giochino con i ".." (directory padre) e ti vadano a leggere file che non dovrebbero
    non capisco, ti puoi spiegare meglio?

    Tra il resto ho aggiunto in cima ai miei file questa direttiva:
    <?php include("librerie/sicurezza.php"); ?>
    http://php.net/manual/en/security.ma....disabling.php
    e aggiunto nel .htaccess la direttiva seguente:
    php_flag magic_quotes_gpc Off
    C'è altro che posso fare?
    Ultima modifica di giannino1995; 31-03-2018 a 19:00
    Più pratica in futuro...

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.