Pregunta

Estoy utilizando el cifrado de nivel de aplicación para proteger los datos confidenciales. Necesito cifrar el campo antes de almacenarlo en la base de datos física y debo descifrarlo antes de mostrarlo en la interfaz de usuario.

Estoy aplicando el patrón de Repository en la aplicación.

¿El código de cifrado / descifrado de datos pertenece dentro o fuera de la clase Repository?

Mi opinión actual es que cuando los datos están en reposo, el cifrado es un aspecto del repositorio y la clase de servicio que utiliza el repositorio no debe estar saturada con este código de cifrado.

La clase de servicio es responsable de la validación y la lógica empresarial, pero el algoritmo de cifrado y la forma en que los datos se almacenan en reposo depende de la implementación del repositorio.

¿Es esta una práctica razonable o me estoy perdiendo algo?

¿Fue útil?

Solución

Es cierto que no desea el cifrado en la clase de servicio.

En cierto sentido, realmente respondes tu propia pregunta cuando dices

  

pero el algoritmo de cifrado y cómo se almacenan los datos en reposo depende de la implementación del repositorio.

Dado que el cifrado es parte de la forma en que se almacenan los datos, pertenece al repositorio.

Otros consejos

Lo pondría en la capa de servicio. He aquí por qué:

Mirándolo desde la perspectiva de los requisitos de una regla / dominio de negocios, ¿el cifrado de datos es un requisito? ¿Debe ser validado con pruebas? Si es así, debe colocarlo en el mismo lugar donde coloca toda su otra lógica de negocios comprobable. En otras palabras, en el servicio.

En lo que a mí respecta, la lógica empresarial (qué cifrar, qué no cifrar) no pertenece al repositorio. Los objetos a persistir deben estar listos para la persistencia (o lo más cerca posible) cuando se entreguen al repositorio. De lo contrario, el repositorio es responsable de la persistencia y de implementar las reglas de negocios, y luego ya no estará usando el patrón del repositorio ...

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