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

    Come evitare il download diretto?

    Dal mio sito è possibile scaricare dei files attraverso delle pagine php in cui l'accesso avviene mediante login. Vorrei però che gli utenti non possano fare download diretti conoscendo il percorso ma devono essere obbligati a passare attraverso le pagine autorizzate.

    Avevo pensato di mettere i file in un area non visibile del sito, cioè in una cartella non appartenente alla root. In questo modo credo che sia impossibile raggiungere direttamente i files (almeno credo ).

    Sapete dirmi quali istruzioni devo mettere nella pagina per effettuare il download di questi file che risiedono altyrove?. Ho sentito parlare che è sufficiente uno script di poche righe ma non ho trovato niente in giro.


  2. #2
    Utente di HTML.it L'avatar di aserena
    Registrato dal
    Feb 2003
    Messaggi
    310
    Devi usare .htaccess
    E' un file che specifica particolari permessi per una directory... in questo modo solo tramite script è possibile accederci... cè una pillola di Daniele_so.lib che spiega l'argomento, se non erro.
    Prova a cercare nel 3D in rilievo.

    htaccess
    - - - - - - - - - - -
    <Files ~ ".+">
    Order allow,deny
    Deny from all
    Satisfy All
    </Files>
    - - - - - - - - - - -

    ciao
    La (!) è quella roba che in autunno si intristisce... perche': seccano i piselli, migrano gli uccelli, cadono i marroni, e se poi c'è anche la nebbia non si vede più un caXXo!! by Piero.mac @07/05

  3. #3
    ma .htaccess funziona con IIS?

  4. #4
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    imponi che per accedere alla pagine di download bisogna per forza arrivare da quella di login ... ti basta un "HTTP_REFERER".

  5. #5
    Non ho ben capito il tuo suggerimento Sgurbat, il problema lo vorrei risolvere mettendo i files in un area non visibile al sito. Questa secondo me è la soluzione più sicura e più semplice, solo che non riesco a far funzionare gli script.

    Ad esempio ho trovato in giro questo:

    function download ($nome, $path)
    {
    $size=filesize ($path);
    $fp=fopen ($path, "r");
    $binary=fread ($fp, $size);
    fclose ($fp);
    $nome=stripslashes ($nome);
    if (strpos($_SERVER['HTTP_USER_AGENT'],"Gecko")) {
    $nome = strtolower ($nome);
    $nome = str_replace("ä","a",$nome);
    $nome = str_replace("ö","o",$nome);
    }
    header("Pragma: public");
    header("Cache-control: private");
    header("Expires: 0");
    header("Content-type: application/RFC822");
    header("Content-type: octet/stream\n");
    header("Content-transfer-encoding: binary\n");
    header("Content-Disposition: attachment; filename=".$nome."\n");
    header("Content-Length:".$size);
    #echo $binary;
    exit();
    }


    download ("file.zip", "g:\a\file.zip");


    Si dovrebbe poter scaricare qualsiasi tipo di file ma mi da il seguente errore:

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 19

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 20

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 21

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 22

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 23

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 24

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 25

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 26


    In pratica non gradisce le istruzioni HEADER.

    Da cosa può dipendere?

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286
    quello che dici tu, credo sia possibile ottenerlo in due modi:
    - usare javascript e per non mostrare il percorso assoluto al file.
    - permettere il download solo a chi arriva dalla pagina di login e quindi ha aperto la sessione!!


    ciao

  7. #7
    Potresti postarmi un esempio in javascript ?

    Per quanto riguarda il permesso a chi si è autenticato ed ha una sessione aperta ci ho già pensato. I file da scaricare sono quattro. Il link ad ognuno di essi richiamerà un file php che ne controllerà le autorizzazioni ed inoltre dovrà effettuare un conteggio ai fini statistici.

    Quello che non sto riuscendo a fare è di mettere i file nell'area non visibile del sito e richiamarli da una pagina.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    headers already sent: vuol dire che hai già mandato qualcosa al browser... sei sicuro di non aver già mandato codice html o altro output al browser, prima della chiamata della funzione?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it L'avatar di pixer
    Registrato dal
    Oct 2000
    Messaggi
    614
    [supersaibal]Originariamente inviato da Sgurbat
    imponi che per accedere alla pagine di download bisogna per forza arrivare da quella di login ... ti basta un "HTTP_REFERER". [/supersaibal]
    Che è facilissimo aggirare.

    L'unico metodo sicuro è quello di far leggere il file da scaricare da uno script php.
    MySQL Worker - The OpenSource Multiplatform MySQL database Administrator (C++ powered)
    .:[ It resumes the development !! ]:.


  10. #10
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    [supersaibal]Originariamente inviato da donatobeltomo
    Non ho ben capito il tuo suggerimento Sgurbat, il problema lo vorrei risolvere mettendo i files in un area non visibile al sito. Questa secondo me è la soluzione più sicura e più semplice, solo che non riesco a far funzionare gli script.

    Ad esempio ho trovato in giro questo:

    function download ($nome, $path)
    {
    $size=filesize ($path);
    $fp=fopen ($path, "r");
    $binary=fread ($fp, $size);
    fclose ($fp);
    $nome=stripslashes ($nome);
    if (strpos($_SERVER['HTTP_USER_AGENT'],"Gecko")) {
    $nome = strtolower ($nome);
    $nome = str_replace("ä","a",$nome);
    $nome = str_replace("ö","o",$nome);
    }
    header("Pragma: public");
    header("Cache-control: private");
    header("Expires: 0");
    header("Content-type: application/RFC822");
    header("Content-type: octet/stream\n");
    header("Content-transfer-encoding: binary\n");
    header("Content-Disposition: attachment; filename=".$nome."\n");
    header("Content-Length:".$size);
    #echo $binary;
    exit();
    }


    download ("file.zip", "g:\a\file.zip");


    Si dovrebbe poter scaricare qualsiasi tipo di file ma mi da il seguente errore:

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 19

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 20

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 21

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 22

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 23

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 24

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 25

    Warning: Cannot modify header information - headers already sent by (output started at G:\Project\Web\root\index2.php:3) in G:\Project\Web\root\index2.php on line 26


    In pratica non gradisce le istruzioni HEADER.

    Da cosa può dipendere? [/supersaibal]
    quel tipo di errore viene generato quando si sono già inviate delle informazioni al browser prima dell'header.
    Controlla di non avere istruzioni echo/print o spazi bianchi prima dell'invio degli header.

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.