Sono un architetto della sicurezza e sono abituato a definire la sicurezza del progetto come una specifica che viene eseguita da altri. Recentemente sono stato incaricato di insegnare a nuovi programmatori come progettare e programmare utilizzando i principi di "Secure by Design" (e nel prossimo futuro "Privacy by Design"). Ho 30-45 minuti (sì, lo so), e il discorso deve essere indipendente dalla lingua. Ciò significa che ho bisogno di presentare regole attuabili di quelle che possono essere applicate dagli sviluppatori Web, dagli sviluppatori di applicazioni e dagli sviluppatori di infrastrutture.
Ho trovato 5 regole di base e un supplemento:
- Non fidati di nessun input interno / esterno (copre servizi igienico-sanitari, buffer overflow, ecc.)
- Minimo privilegio per qualsiasi entità, oggetto o utente
- Fail "nessun privilegio"
- Sicuro, anche se il design è noto / pubblico
- Accedi in modo che qualcuno che non ha familiarità con il sistema possa controllare ogni azione
Supplemento: se violi una Regola, dimostra che la mitigazione può sopravvivere ai futuri programmatori che aggiungono funzionalità.
Ciascuna di queste regole può essere aumentata con esempi tratti da qualsiasi lingua o applicazione, per una guida specifica. Credo che questo gestisca la maggior parte dei principi generali di "Secure by Design" da una prospettiva di alto livello. Ho perso qualcosa?