¿Cómo puedo proteger el espejo de un cliente de la base de datos del servidor?

2

El escenario es el siguiente:

  • Hay clientes a los que los usuarios pueden acceder y trabajar con ellos.
  • Estos clientes pueden estar en línea o fuera de línea.
  • Hay una base de datos central en un servidor, que contiene todos los datos de autorización.
  • Cada cliente tiene un espejo de una parte de la base de datos central.
  • A intervalos regulares, el cliente se conecta para conectarse al servidor central y actualiza su base de datos local para que coincida con la del servidor central.

El propósito de la base de datos de autenticación local es que un programa que se ejecuta en el cliente puede determinar a qué niveles de acceso los usuarios (cuando el cliente está fuera de línea) están autorizados para ejecutar el programa.

¿Existen prácticas generales recomendadas sobre cómo proteger la base de datos local en el cliente para que no sea vista y manipulada por usuarios no autorizados?

    
pregunta Lars Andren 11.01.2012 - 10:28
fuente

2 respuestas

2

¿Estas bases de datos (locales y centrales) contienen datos de autorización o autenticación (o ambos)? Tu pregunta se refiere a ella usando ambas formas.

Pero, sea lo que sea, si la base de datos es local y el usuario (o, de manera equivalente, un proceso que se ejecuta como ese usuario) tiene que poder leerlo (por ejemplo, para verificar que tienen una autenticación / autorización válida) y que la lectura debe ser (¡por definición!) antes de que el usuario se autentique y autorice, entonces usted no tendrá suerte; el usuario deberá tener acceso de lectura para poder leer los datos.

Es posible que pueda evitar la modificación de los datos (o al menos detectar y rechazar dicha modificación, por ejemplo, a través de una firma criptográfica / cifrado de clave pública usando una clave privada almacenada en el servidor cuyo par de claves públicas se encuentra en la máquina cliente) pero el usuario aún podría subvertir la autenticación / autorización dentro del modo "fuera de línea" de la aplicación cliente modificando / inyectando en el código que se ejecuta localmente.

Además de estos "obstáculos", también deberá asegurarse de que cuando el cliente se vuelva a conectar, el servidor evite que los cambios no autorizados que se realizaron en el modo fuera de línea se propaguen al servidor.

    
respondido por el Misha 12.01.2012 - 18:24
fuente
1

Debería decir dos cosas:

1- Este no es un buen modelo si los usuarios tienen incentivos suficientes para acceder a los datos a los que se supone que no deben tener acceso (ya que parece que tienen todos los datos, pero el software del cliente les impide "ver" a todos basado en los permisos definidos en la base de datos)

2- Si debe hacerlo de la forma que dice, debe cifrar la base de datos del cliente.

    
respondido por el Ali 12.01.2012 - 19:31
fuente

Lea otras preguntas en las etiquetas