Ho un tipico sito Web basato su MVC e vorrei dare ad alcuni utenti registrati la capacità di estrarre i dati dal database (in una varietà di formati). Il flusso di lavoro è molto semplice:
- Accesso utente,
- L'utente fa clic sull'esportazione,
- Viene generato un file,
- L'utente scarica il file.
Sto cercando di capire come proteggere l'ultimo passaggio e limitare l'accesso al file. Affinché l'utente possa scaricare il file, dovrebbe trovarsi in una cartella accessibile al pubblico. Ciò, tuttavia, significa che il file è accessibile a tutti gli altri che hanno accesso al proprio URL completo.
Ho pensato ad alcune possibili soluzioni:
-
Invia per email il file di esportazione
Invece di fare in modo che l'utente scarichi il file, potrei semplicemente inviarlo via email alla sua email (quella che hanno usato per registrarsi sul sito). Sembra un'opzione decente quando i file di esportazione sono piccoli, ma non penso che sarà ottimale per i file più grandi.
-
.htaccess magic
Potrei generare automaticamente un .htaccess nella directory di esportazione che permetterebbe solo all'utente che ha richiesto l'esportazione di accedervi. Anche un'opzione decente, ma è specifica del server web e basata su IP. Non so se Apache sarà sempre il server web di scelta per il progetto, e non sono sicuro che una soluzione basata su IP sia effettivamente sicura.
-
Archivia il file di esportazione in una cartella privata e chiedi all'utente di recuperarlo tramite ftp
Sicuro, ma non particolarmente user-friendly.
Tutte le mie opzioni sembrano avere problemi, e sono a quel punto in cui sono completamente bloccato e non riesco a scuotere la sensazione che mi manchi qualcosa di ovvio. Sono io? C'è un flusso di lavoro migliore?
Sono più interessato a una panoramica di alto livello rispetto ai dettagli tecnici, il progetto è ancora ai suoi esordi ei requisiti tecnici non sono ancora stati stabilizzati (ad esempio, non possiamo usare Apache dopo tutto). Il progetto è compilato in PHP, ma non penso che importi (vero?).
Grazie.