Un'applicazione ha 2 server - Server1 e Server2 .
Server1 memorizza i file db e image + video. Server2 memorizza una copia di tutti i file immagine + video.
In base alla posizione geografica di un utente, se appropriato, a volte viene utilizzato Server2 (anziché Server1 ) per la consegna del contenuto.
L'applicazione ha file immagine e video che sono privati per gli utenti. Tutta la logica di chi è autorizzato ad accedere a quale file risiede nel db in Server1 .
Solo gli utenti che hanno effettuato l'accesso all'applicazione (con nome utente e password) possono accedere al loro contenuto privato.
Il modo in cui intendo servire i contenuti è -
- La richiesta di immagine (o video) arriva a
Server1. Viene controllato se questo utente può accedere al file. Se sì, allora - - (Se geograficamente appropriato)
Server1invia intestazioni CORS (perServer2) + 3 numeri casuali a 10 cifre (numset) come intestazioni e la risposta viene reindirizzata aServer2. - Riguardo a
numset-Server1trasporta un nuovo set di 3 numeri casuali a 10 cifre aServer2ogni 30 secondi. Ogni serie di 3 numeri casuali a 10 cifre ha una durata di 40 secondi (10 secondi in più per impedire il rifiuto delle richieste di volo). - La richiesta reindirizzata raggiunge
Server2, in cui le intestazioni delle richieste vengono confrontate connumsetgià esistente e l'origine della richiesta CORS viene verificata per corrispondere a% diServer1. Se tutti i controlli sono ok, allora - - Il file è servito.
Nota:
1. i nomi dei file di immagini e video sono numeri casuali di 8 cifre.
2. Server1 e Server2 sono entrambi su https.
Domande -
1. In che modo Server2 può essere reso più sicuro, in modo che un utente che ha effettuato l'accesso, che è in realtà un hacker, effettui richieste di ricciolo, non possa accedere ai file che non è autorizzato a visualizzare?
2. Questo approccio è appropriato dal punto di vista delle prestazioni?