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

    Proteggere files, uno per uno

    Ciao,
    sto creando un sito dal quale scaricare versioni demo di alcuni software.
    Vorrei però proteggere l'accesso, piu che altro per tener traccia di chi scarica i file.
    Quindi
    registrazione utente
    invio codice-password e url per scaricare file

    Il problema è che vorrei costruire un sistema di "One Time Password", ovvero le password cambiano ogni volta e con 1 password l'utente può scaricare 1 solo file, 1 sola volta. Proprio come avviene con bancasella quando si fa una transazione.

    E' possibile realizzare un sistema del genere? Se uso la protezione .htaccess sulla cartella poi posso permettere comunque il download dei file con php (quindi dopo una query di validazione pwd)?

  2. #2
    Da quello che ho capito, è abbastanza semplice da realizzare. Le "one time password" le generi come preferisci... costruendo un file contenente una serie di password per il singolo utente, oppure creando al volo la singola password quando l'utente ne fa richiesta e memorizzandola in un database, controllando che questa non sia gia stata usata in precedenza (perlomeno, che non sia gia presente nel database come password ancora attiva per qualche altro utente).

    Ho scritto una funzione, non molto tempo fa, per scaricare i files in automatico senza che l'utente possa vedere l'url reale. Gli url, quindi, te li gestisci internamente e l'utente non potrà riscaricare quel file oppure passarne l'url a terzi, perchè non è in grado di conoscerlo.

    La funzione la trovi qua:
    http://www.codeflower.com/index.php?a=showCode&id=29

    Come esempio di funzionamento clicca sul link "Download" in quella stessa pagina (in alto a destra). Supporta sia files gia presenti sul server in modo stabile (dei quali devi passare il path), sia files creati al volo dalla funzione stessa (ad esempio, se costruisci un testo in modo dinamico dipendente da alcuni parametri passati dall'utente, e vuoi fare in modo che l'utente possa scaricare il testo risultante senza che questo venga conservato in modo stabile sul server).

    Fammi sapere se hai problemi.
    Cristian.

  3. #3
    con il tuo sistema di protezione però l'utente potrebbe risalire, magari a tentativi, alla cartella e da li scaricare tutto quello ceh vuole giusto?

    se i file sono in
    download/file_protetti

    anche se il tuo codice (a proposito grazie per la segnalazione) non mostra il percorso, uno potrebbe cercare di costruirlo.. a meno che non usi un nome criptico..

  4. #4
    Puoi disabilitare il "file listing" dalla cartella sul server (fruga tra le impostazioni del server web) e magari dare anche dei nomi fittizi ai files su quella cartella, nomi che non siano identici al nome del file che apparirà all'utente durante il download.

    La funzione che ho scritto permette di impostare due nomi di file, in particolare questi parametri:

    $file_name_user: è il nome di file che apparirà all'utente dopo aver scaricato il documento.

    $file_name: è il nome e path reale del file sul server, che può anche essere diverso dal parametro precedente.

    Ora non so in che modo gestisci i files da scaricare, se con un database di supporto oppure semplicemente uploadando i files in quella cartella ma senza registrare il nome, comunque puoi dare al file sul server un nome codificato generato in automatico (es.: anno-mese-giorno-ore-minuti-secondi-numerocasuale.est per essere sicuro che non venga generato un nome di file gia presente, che causerebbe la sovrascrittura del vecchio file).

    Se invece i files non li gestisci con una tabella di supporto e non puoi creare nomi di file automatici registrando anche la corrispondenza tra il nome del file sul server ed il nome del file in chiaro che l'utente vedrà, puoi semplicemente aggiungere una stringa fissa all'inizio di ogni nome di file.

    Ad esempio, se il file da scaricare si chiama "mio_file.txt" puoi uploadarlo sul server come "download_mio_file.txt"; quando esegui la funzione di scaricamento sai che il file in questione è "download_mio_file.txt", e per ottenere il nome definitivo non devi fare altro che togliere la parte "download_" dal nome di file sul server...

    In questo modo, anche se l'utente dovesse risalire all'url della cartella dove risiedono i files:

    1. il listing è disabilitato quindi non può vedere i files presenti;
    2. comunque sia, l'utente non può sapere che il nome reale del file sul server è "download_mio_file.txt" considerando che lui ha scaricato "mio_file.txt"

    Questa è una soluzione che mi è venuta in mente adesso, dovrebbe essere funzionale.

    Ciao.

  5. #5
    sto usando il tuo codice, il problema è che mi stampa a video il "contenuto" del file (ovviamente caratteri ostrogoti , nonostante il
    header("Content-type: application/force-download");
    non mi propone di salvarlo.
    Come potrei risolvere?

  6. #6
    umh..... sicuro che prima della chiamata a quella funzione per il download, non venga inviato niente di niente al browser?

  7. #7
    [supersaibal]Originariamente inviato da OhMyGod
    umh..... sicuro che prima della chiamata a quella funzione per il download, non venga inviato niente di niente al browser? [/supersaibal]
    ok perfetto, c'era uno spazio prima della chiamata alla funzione download.

    Peccato che non possa chiamare i file in modo criptico ma devono per forza avere nomi intuibili.. e visto che sono cosi grandi che l'upload avviene via ftp non posso neanche usare un pannello che magari li rinomini

    Secondo te quindi la soluzione
    - file in cartella protetta con htaccess
    - download file possibile solo previa verifica password, inviati al browser con il tuo script
    potrebbe avere bug di sicurezza?

  8. #8
    Secondo te quindi la soluzione
    - file in cartella protetta con htaccess
    - download file possibile solo previa verifica password, inviati al browser con il tuo script
    potrebbe avere bug di sicurezza?
    boh..... mi rimetto ai pareri degli altri utenti del forum....

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.