Comprendi i principi generali di sicurezza (integrità, autenticazione, autorizzazione) e poi
leggi alcuni libri su come le persone hanno sovvertito questi pilastri della sicurezza per millenni e sarai a metà strada.
Poi leggi alcuni buoni libri sulle strategie di progettazione e test e imparerai come progettare la testabilità nella tua architettura.
Ora arriviamo al punto in cui penso alla sicurezza. Sto pensando a come convalidare la fonte dei dati, importa se i dati sono manomessi, chi è la fonte dei dati, quanto sono sicuro di ciò? come potrebbe essere stato modificato ecc ...
Ciò influenza il design. I file di configurazione possono avere sezioni chiave crittografate, o particolari campi potrebbero essere in chiaro con un campo firma associato. Le cose si fanno più complesse con i servizi di internet in quanto dovresti aspettarti un maggiore livello di ostilità.
Poi alla prova, come testate tutto questo. Quali sono i tuoi dati massimi, cosa succede se spingi il software oltre questi limiti, come lo gestisce? Di cosa si fida? come puoi fingere questa fiducia?