2009-03-05 9 views
0

J'utilise le cryptage au niveau de l'application pour protéger les données sensibles. J'ai besoin de crypter le champ avant de le stocker dans la base de données physique et j'ai besoin de le déchiffrer avant de le montrer sur l'interface utilisateur.Le chiffrement de données appartient-il au modèle de référentiel?

J'applique le modèle Repository dans l'application.

Le code de chiffrement/déchiffrement des données appartient-il à la classe du référentiel ou en dehors de celle-ci? Mes pensées actuelles sont que lorsque les données sont au repos, le cryptage est un aspect du référentiel et la classe de service utilisant le référentiel ne doit pas être encombré avec ce code de cryptage.

La classe de service est responsable de la validation et de la logique métier, mais l'algorithme de chiffrement et la manière dont les données sont stockées au repos dépendent de l'implémentation du référentiel.

Est-ce une pratique raisonnable ou manque-t-il quelque chose?

Répondre

3

Vous ne voulez certainement pas de cryptage dans la classe de service.

Dans un certain sens, vous répondez effectivement à votre question lorsque vous dites

mais l'algorithme de chiffrement et la façon dont les données sont stockées au repos est à la mise en œuvre du référentiel.

Puisque le cryptage fait partie de la façon dont les données sont stockées, elles appartiennent à l'intérieur du référentiel.

+0

+1 - c'est un détail d'implémentation. Laissez le dépôt traiter avec lui au besoin. – duffymo

+0

D'accord. La préoccupation est seulement dans le référentiel. – eduncan911

1

Je le mettrais dans la couche de service. Voici pourquoi:

D'après une perspective de règles/exigences métier, le cryptage des données est-il une exigence? Devrait-il être validé avec des tests? Si c'est le cas, vous devez le placer dans le même endroit où vous mettez toute votre logique métier testable. En d'autres termes, dans le service.

En ce qui me concerne, la logique métier (que chiffrer, quoi ne pas crypter) n'appartient pas au référentiel. Les objets à conserver doivent être prêts pour la persistance (ou aussi près que possible) lorsqu'ils sont donnés au référentiel. Sinon, le référentiel est responsable de la persistance et en implémentant des règles métier, puis vous n'utilisez plus vraiment le modèle de référentiel ...