Domanda

Sto usando la crittografia a livello di applicazione per proteggere i dati sensibili. Devo crittografare il campo prima di memorizzarlo nel database fisico e devo decrittografarlo prima di mostrarlo nell'interfaccia utente.

Sto applicando il modello di repository nell'applicazione.

Il codice di crittografia / decrittografia dei dati appartiene all'interno o all'esterno della classe Repository?

I miei pensieri attuali sono che quando i dati sono a riposo, la crittografia è un aspetto del repository e la classe di servizio che utilizza il repository non deve essere ingombra di questo codice di crittografia.

La classe di servizio è responsabile della convalida e della logica aziendale, ma l'algoritmo di crittografia e il modo in cui i dati vengono archiviati a riposo dipende dall'implementazione del repository.

È una pratica ragionevole o mi sto perdendo qualcosa?

È stato utile?

Soluzione

Certamente non vuoi la crittografia nella classe di servizio.

In un certo senso, in realtà rispondi alla tua domanda quando dici

  

ma l'algoritmo di crittografia e il modo in cui i dati vengono archiviati a riposo dipende dall'implementazione del repository.

Poiché la crittografia fa parte del modo in cui i dati vengono archiviati, appartiene al repository.

Altri suggerimenti

Lo metterei nel livello di servizio. Ecco perché:

Guardandolo dal punto di vista delle regole aziendali / dei requisiti di dominio, la crittografia dei dati è un requisito? Dovrebbe essere convalidato con i test? In tal caso, dovresti posizionarlo nello stesso posto in cui hai inserito tutte le altre logiche aziendali testabili. In altre parole, nel servizio.

Per quanto mi riguarda, la logica di business (cosa crittografare, cosa non crittografare) non appartiene al repository. Gli oggetti da persistere dovrebbero essere pronti per la persistenza (o il più vicino possibile) quando vengono dati al repository. Altrimenti, il repository è responsabile della persistenza e dell'implementazione delle regole di business e quindi non si utilizza più il modello di repository ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top