Seguridad de entrega de contenido

1

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 -

  1. La solicitud de imagen (o video) llega a Server1 . Se verifica si Este usuario puede acceder al archivo. Si es así, entonces -
  2. (Si es geográficamente apropiado) Server1 envía encabezados CORS (para Server2 ) + 3 números aleatorios de 10 dígitos ( numset ) como encabezados, y la respuesta se redirige a Server2 .
  3. Con respecto a numset - Server1 , se transmite un nuevo conjunto de 3 números aleatorios de 10 dígitos a Server2 cada 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).
  4. La solicitud redirigida alcanza Server2 , donde los encabezados de la solicitud se comparan con el numset ya existente, y se comprueba el origen de la solicitud CORS para que coincida con el de Server1 . Si todos los controles están bien, entonces -
  5. 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?

    
pregunta vjjj 29.07.2017 - 10:43
fuente

0 respuestas

Lea otras preguntas en las etiquetas