Abbiamo scritto una semplice applicazione desktop .NET (C #) in Wpf. Abbiamo anche utilizzato WIF (Windows Identity Framework) per ottenere un elenco di attestazioni per l'utente autenticato. Alcuni esempi sono:
- CanOverrideSalesAmount
- CanAddContact
- ecc.
Funziona bene e tutto, il client sembra molto protetto. Ma, quando stavo eseguendo il debug dell'applicazione mi è venuto in mente che tutta l'autorizzazione sta avvenendo dal lato client. Una persona subdola potrebbe utilizzare uno strumento come Snoop per collegarsi all'applicazione e apportare modifiche al modello di dominio che non dovrebbe fare.
Abbiamo pensato di spostare i controlli di autorizzazione sui setter di proprietà, ma anche questo non è abbastanza buono perché quando serializziamo il grafico dell'oggetto per inviare il filo, i dati serializzati possono essere modificati (molto estrapolati, ma ancora possibili) .
Mi sembra che l'unico vero modo per proteggere il mio grafo di oggetti sia di farlo risiedere sul server e fare in modo che il client effettui chiamate per aggiornarlo, ma sembra un tale eccessivo. C'è un modo migliore per gestire questa situazione? Voglio che la nostra applicazione sia il più sicura possibile.