Ich bin ein Sicherheitsarchitekt und ich bin es gewohnt, die Sicherheit eines Projekts als eine Spezifikation zu definieren, die von anderen ausgeführt wird. Ich wurde kürzlich beauftragt, neuen Programmierern das Entwerfen und Programmieren nach den Prinzipien von "Secure by Design" (und in naher Zukunft "Privacy by Design") beizubringen. Ich habe 30-45 Minuten (ja, ich weiß) und das Gespräch muss sprachunabhängig sein. Dies bedeutet, dass ich umsetzbare Regeln präsentieren muss, die von den Webentwicklern, Anwendungsentwicklern und Infrastrukturentwicklern angewendet werden können.
Ich habe mir 5 Grundregeln und eine Ergänzung ausgedacht:
- Vertraue keinen internen / externen Eingaben (deckt Hygiene, Pufferüberläufe usw. ab)
- Geringste Berechtigung für eine Entität, ein Objekt oder einen Benutzer
- Fehlschlagen "keine Berechtigung"
- Sicher, auch wenn das Design bekannt / öffentlich ist
- Protokollieren Sie, damit jemand nicht vertraut ist Mit dem System kann jede Aktion überwacht werden. ol>
Ergänzung: Wenn Sie gegen eine Regel verstoßen, beweisen Sie, dass die Schadensbegrenzung zukünftige Programmierer überleben kann, die Funktionen hinzufügen.
Jede dieser Regeln kann erweitert werden mit Beispielen aus jeder Sprache oder Anwendung für spezifische Anleitungen. Ich glaube, dies behandelt die meisten allgemeinen Prinzipien von "Secure by Design" aus einer hochrangigen Perspektive. Habe ich etwas verpasst?