Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    1,065

    Download file e sicurezza

    Ho trovato nelle pillole in rilievo lo script di shishii per forzare lo scaricamento di file, ma le frasi
    Si fa presente che il codice seguente è funzionante ma solo indicativo in quanto *NON* contiene alcun meccanismo di sicurezza.
    RICORDATEVI di implementare le necessarie sicurezze per evitare che un lamerazzo vi scarichi il file delle password.
    che significano?

    Ho provato lo script, funziona benissimo ed era proprio quello di cui avevo bisogno MA non vorrei aprire un baco gigantesco nel server...

    Lo script è questo:
    #!/usr/bin/perl

    use strict; # Ormai oggi è quasi obbligatorio.
    use CGI; # semplifica la lettura dell'input

    my $dir = "/var/www/html"; # directory che contiene i file da scaricare

    my $q = new CGI;

    my $file = $q->param('file'); # raccoglie il nome file

    my $size = (-s "$dir/$file"); # ne calcola la dimensione

    my $buf;

    # segue l'header http necessario per impedire l'apertura
    # del file
    print "Content-type: octet/stream\n";
    print "Content-length: $size\n";
    print "Content-disposition: attachment; filename=$dir/$file\n\n";

    open (FILE, "<$dir/$file");
    # il file viene letto e poi scritto sullo STOUT
    # differenziando i file binari da quelli ASCII
    if (-B "$dir/$file") {
    binmode FILE;
    while (read FILE, $buf, 1024) {
    print $buf;
    }
    } else {
    while (<FILE> ) {
    print;
    }
    }
    close FILE;

    exit;
    Grazie

  2. #2
    intende dire che se io richiedo la pagina:
    /../../../../etc/passwd (non mi ricordo dov'è sta il file delle password), il tuo amico ti può scaricare qualsiasi file presente sul server.

    E' opportuno quindi fare controllo sull'indirizzo del file passato.
    Controllare che i doppi punti non siano presenti e altre cose che ora non mi vengono in mente.


    capito?
    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    1,065
    Quindi passando un parametro "cattivo" potrei teoricamente leggere tutto sul computer. VVoVe:

    Se filtro il my $file = $q->param('file'); che contenga solo certi caratteri potrei essere ragionevolmente sicuro...

    Perl mi piace un casino per semplicità e quantità di funzioni ma credo che mi devo studiare un pò di sicurezza.

  4. #4
    Originariamente inviato da homeworker
    Quindi passando un parametro "cattivo" potrei teoricamente leggere tutto sul computer. VVoVe:

    Se filtro il my $file = $q->param('file'); che contenga solo certi caratteri potrei essere ragionevolmente sicuro...

    Perl mi piace un casino per semplicità e quantità di funzioni ma credo che mi devo studiare un pò di sicurezza.
    Anche a me piace molto il perl.
    CMQ, all'inizio si provano a togliere i bachi più evidenti.
    In questo caso controlli che certi caratteri non siano presenti.
    penso che:
    die "contiene doppi punti\n" if $file=~ /\.\./;

    possa bastare nel tuo caso.

    Ciao

  5. #5
    Molto meglio fare il lavoro contrario, cioè consentire solo i caratteri ammessi, ad es:

    die "Errore\n" if ($q->param('file') !~ /[a-zA-Z0-9_.-]+/ or $q->param('file') =~ /\.\./);

    un punto lo devi ammettere per forza, ma devi escludere tutti gli altri caratteri che non hanno senso nel nome di un file: /\ ' " & $; eccetera.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    1,065
    Grazie.

    Volendo potrei anche fare:
    die "Errore\n" if ($q->param('file') !~ /^inizio/);

    E nomino i file (nel mio caso pdf) con "inizio" ad inizio nome...

  7. #7
    Potrebbe andare, ma non ho fatto prove specifiche in modo da garantire la sicurezza del tuo metodo.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    1,065
    Ok, grazie mille e buon lavoro a tutti

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.