Una aplicación tiene 2 servidores: Server1 y Server2 .
Server1 almacena archivos de db e imagen + video. Server2 almacena una copia de todos los archivos de imagen + video.
De acuerdo con la ubicación geográfica de un usuario, si corresponde, a veces se usa Server2 (en lugar de Server1 ) para la entrega de contenido.
La aplicación tiene archivos de imagen y video que son privados para los usuarios. Toda la lógica de quién tiene acceso a qué archivo reside en la base de datos en Server1 .
Solo los usuarios registrados en la aplicación (con nombre de usuario y contraseña) pueden acceder a su contenido privado.
La forma en que pretendo servir el contenido es -
- La solicitud de imagen (o video) llega a
Server1. Se verifica si Este usuario puede acceder al archivo. Si es así, entonces - - (Si es geográficamente apropiado)
Server1envía encabezados CORS (paraServer2) + 3 números aleatorios de 10 dígitos (numset) como encabezados, y la respuesta se redirige aServer2. - Con respecto a
numset-Server1, se transmite un nuevo conjunto de 3 números aleatorios de 10 dígitos aServer2cada 30 segundos. Cada conjunto de 3 números aleatorios de 10 dígitos tiene una vida útil de 40 segundos (10 segundos más para evitar el rechazo de solicitudes de vuelo). - La solicitud redirigida alcanza
Server2, donde los encabezados de la solicitud se comparan con elnumsetya existente, y se comprueba el origen de la solicitud CORS para que coincida con el deServer1. Si todos los controles están bien, entonces - - Se sirve el archivo.
Nota:
1. Los nombres de los archivos de imagen y video son números aleatorios de 8 dígitos.
2. Server1 y Server2 están sobre https.
Preguntas -
1. ¿Cómo se puede hacer que Server2 sea más seguro, de modo que un usuario registrado, que en realidad es un pirata informático, que realiza solicitudes de curl, no pueda acceder a los archivos que no está autorizado a ver?
2. ¿Es este enfoque apropiado desde el punto de vista del desempeño?