Il mio schema di autorizzazione per l'accesso ai file basato su invito vale la pena?

-1

Devo consentire agli utenti di caricare file con dati sensibili su un server, quindi invitare altri utenti autenticati ad accedere a file specifici.

Questa è la mia soluzione proposta:

Ogni utente avrà la propria cartella in cui carica i file e la cartella principale avrà un .htaccess con deny all per bloccare l'accesso diretto. (Questo funziona già bene.)

Quindi, un utente invitato riceverà un ID invito SHA1 generato e l'url sarà qualcosa come download/[sha1]/file e quindi posso usare il mio controller per verificare se questo invito esiste nel database per questo utente autenticato. Se lo fa, ottengo il file e in base all'estensione del file ho dato l'intestazione appropriata per il download del file.

es:

localhost/[whatever]/download/[some_hash]/test.txt

invitation_table
invite_id         - unique ID
invite_token      - sha1 which will be generated by his unique email concatenated with other data
invite_invited    - logged user invite
invite_user       - user who invited the user

Sulla base dell'hash, interrogo il db e ottengo i dati di invite_user e so in quale directory devo ottenere il file perché ci possono essere più file sul server con lo stesso nome in diverse directory.

È un buon approccio?

    
posta ka_lin 29.09.2013 - 02:47
fonte

1 risposta

1

Il tuo utilizzo di SHA-1 è alquanto rischioso. Uno schema basato su token hash, come da tua proposta, può essere fatto in modo sicuro. Tuttavia, ci sono varie sottigliezze per farlo bene. Considerando che stai per eseguire una ricerca nel database per ciascun accesso ai file, non è necessario fare affidamento sui token hash.

Suggerisco invece un sistema molto più semplice in cui invitation_table consiste semplicemente in file_id e user_id. Quando un proprietario di file invita un utente, aggiungi una riga alla tabella. Quando un utente richiede un file, controlla se l'utente richiedente ha una voce nella tabella per quel file id.

    
risposta data 21.10.2013 - 22:08
fonte

Leggi altre domande sui tag