Pregunta

Hay una cierta discusión en mi equipo acerca de la actualización de datos de la entidad y la mejor manera de acercarse a ella. Se trata de un marco de seguridad y así que aquí están algunas de las limitaciones e ideas.

  1. cada mesa en el PP tiene una PK que es un GUID, esto es necesario para nuestra solución de clústeres de varios nodos. La idea es que no queremos exponer esto en una entidad a un cliente a través de una API, ya que podría hacer dos cosas,
    1. les dan más información que necesita para su trabajo y dando a los hackers obtener más información acerca del sistema.
    2. pesadilla apoyo es que un cliente hardcodes a este ID en cierto modo, y si es necesario cambiar los clientes de nuestra PK se vean afectados.

Las soluciones son para exponer la tecla natual de los artículos como objeto de función con un nombre único, y reino, junto guarentee singularidad embargo actualizando cualquiera de estos valores es el reto, porque es necesario especificar los valores antiguos y nuevos para actualizar, o pasar dos objetos en objeto original y nuevo, para que podamos encontrar la de actualizar. tipo de desordenado,

Otro enfoque es hacer una clave alternativa y han expuesto a este cliente pueden usarlo todo lo que quieren y que no les importa porque no está ligado a nuestra PK.

parece que todos estos días sólo utiliza PK como ID para entidades sin problemas, sin saber cómo convencer a nuestro equipo de veterns de los viejos tiempos de programación del período antiguo.

Otra cuestión es cómo apoyar actualizaciones parciales, problema es que usted tiene entidad con 10 propiedades, 4 colecciones, etc ... con un nombre de dominio + combo y especificar qué propiedades para actualizar en lugar de desplegar todo cambio de objeto 1 Campo , enviar de vuelta para su actualización. Digo carga perezosa las colecciones, pero no está seguro de si tiene sentido actualización parcial.

pensamientos?

Gracias!

¿Fue útil?

Solución

Mi enfoque de un marco de seguridad sería la siguiente:

  • Dar cualquier cosa en la base de datos un identificador interno (columna de identidad, secuencia, sea cual sea su soporte de base de datos. "Nativo columna ID generado" en Hibernate hablar). Con el tiempo, vas a necesitar y para la reconversión de una gran cantidad de trabajo.

  • Si tuviera que entregar una identificación para el usuario, generar un número aleatorio, compruebe que no ha sido ya utilizado, conectarlo a un ID interno y luego entregarlo al usuario. No repartir el ID interno y no ID de uso que pueden ser adivinadas por los crackers.

En cuanto a actualizaciones parciales, que sólo empiezan a tener sentido si usted tiene un montón de objetos con una gran cantidad de atributos. Durante 10 atributos, diría " prematura optimización ."

Otros consejos

Usar clave natural si es necesario exponer a Identificación del cliente. No es tan fácil de implementar, pero esa es la forma correcta.

Podría dar poco más detalles sobre esas actualizaciones parciales? Yo no entiendo. : /

El uso de GUID en cada mesa como clave principal suena como pidiendo problemas. No he visto este enfoque adoptado ninguna parte a menos que realmente te estoy malentendido. ¿Por qué no acaba de emitir un UID para cada usuario y el trabajo con el UID?

Este enfoque es más común en todas las empresas. El UID no es PII por lo que está bien legalmente como era como desde el punto de vista de la seguridad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top