Come posso proteggere i dati scaricabili in modo che non possano essere sfruttati facilmente?

1

Sto sviluppando un'applicazione web che memorizza informazioni sensibili a cui l'utente può accedere dopo un controllo che ho creato. Questa funzione restituisce quindi un URL di download all'utente che conduce al server FTP.

La mia preoccupazione è che potrebbe essere vulnerabile allo sfruttamento, le persone potrebbero alterare determinati URL per scaricare file dal server FTP. Ad esempio cambiare:

/App_Data/Company1/Financials_2015.pdf

A:

/App_Data/Company2/Financials_2015.pdf

È possibile sfruttarlo e, in tal caso, c'è un modo migliore per assicurarsi che non si possa abusarne?

    
posta Roy123 01.05.2017 - 17:06
fonte

3 risposte

3

La protezione di un server FTP richiede l'impostazione degli utenti / gruppi appropriati sul server FTP e l'assegnazione corretta della proprietà ai file nel server FTP. Ciò significa che il server FTP in questo caso avrebbe:

  • Raggruppa "Company1"
  • Raggruppa "Company2"
  • Utenti assegnati a un gruppo o l'altro
  • I file con il proprietario del gruppo sono "Company1"
  • I file con il proprietario del gruppo sono "Company2"

Solo gli utenti che appartengono al gruppo corretto possono recuperare i file. Inoltre, come @JimmyJames menzionato dovresti usare SFTP o FTPS.

Un'opzione migliore sarebbe usare il tuo server HTTP per controllare l'accesso. Puoi fornire l'accesso WebDAV se vuoi divertirti. Windows 7 consente a un utente di montare un'area WebDAV come unità remota.

La maggior parte degli utenti si accontenta del tutto semplicemente facendo clic su un link per scaricare i report sul proprio computer e, poiché l'infrastruttura è già stata creata, questa soluzione ti offrirà la soluzione più gestibile.

    
risposta data 01.05.2017 - 21:25
fonte
2

In poche parole la risposta è che dipende. Questo tipo di vulnerabilità è molto comune e si riduce a errori di configurazione e / o bug nel software FTP. Leggi il manuale e controlla la lista CVE per la tua piattaforma.

Di sicuro è necessario utilizzare SFTP o FTPS. Si noti che il primo utilizza SSH e quindi è necessario che gli utenti effettivi esistano nell'host. Questi utenti possono uscire in una semplice sessione SSH, quindi è necessario essere precisi sulle autorizzazioni che gli vengono concesse sull'host.

Ci sono molte persone che continuano a spingere FTP come soluzione e sostengono che va bene. Tendo a non essere d'accordo e penso che HTTPS può fare tutto ciò che l'FTP può fare (e altro) ed è più facile da gestire. Come fa notare Phillip Kendall, devi già occuparti del sito web e dei rischi ad esso associati, quindi stai semplicemente aumentando la superficie di attacco introducendo FTP nel mix. A volte dovrai occuparti di terze parti che "richiedono" FTP a causa di inettitudine. Questa è davvero l'unica ragione legittima per usarlo, IMO.

    
risposta data 01.05.2017 - 17:51
fonte
2

Se per posizione su un server FTP intendi solo la posizione, ma i file vengono ancora scaricati utilizzando una connessione HTTP (S), quello che stai cercando è un altro livello di sicurezza durante l'esecuzione dello script.

Invece di servire direttamente un file, quando qualcuno richiede un file dal tuo server, li reindirizza in modo silenzioso a uno script che controlla le autorizzazioni sul file (è molto probabile che sia una ricerca nel database) e se la condizione passa, avvia lo streaming il file dal tuo server. In caso contrario, restituisci 403 Forbidden o 404 Not Found, se non vuoi che gli utenti non autorizzati sappiano che anche altri file che stanno tentando di accedere esistono sul server.

Se parli direttamente di una connessione FTP, la soluzione è permessi per directory / file.

    
risposta data 01.05.2017 - 21:45
fonte

Leggi altre domande sui tag