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)
Server1
invia intestazioni CORS (perServer2
) + 3 numeri casuali a 10 cifre (numset
) come intestazioni e la risposta viene reindirizzata aServer2
. - Riguardo a
numset
-Server1
trasporta un nuovo set di 3 numeri casuali a 10 cifre aServer2
ogni 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 connumset
già 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?