433 Stimmen

Was sollte jeder Programmierer über Sicherheit wissen?

Ich bin Informatikstudent und befinde mich jetzt im 3. Bis jetzt haben wir viele Fächer studiert, die mit Computern im Allgemeinen zu tun haben (Programmierung, Algorithmen, Computerarchitektur, Mathe usw.).

Ich bin mir sehr sicher, dass niemand alles über Sicherheit lernen kann, aber sicher gibt es ein "Minimum" an Wissen, das jeder Programmierer oder IT-Student darüber wissen sollte, und meine Frage ist, was ist dieses Minimum an Wissen?

Können Sie mir einige E-Books oder Kurse empfehlen, die mir helfen können, diesen Weg zu beschreiten?

564voto

bignum Punkte 3348

Grundsätze, die Sie beachten sollten, wenn Sie wollen, dass Ihre Anwendungen sicher sind:

  • Trauen Sie niemals einer Eingabe!
  • Eingabe validieren aus allen nicht vertrauenswürdigen Quellen - verwenden Sie Whitelists, nicht Blacklists
  • Planen Sie die Sicherheit von Anfang an ein - sie ist nicht etwas, das Sie am Ende nachrüsten können.
  • Halten Sie es einfach - Komplexität erhöht die Wahrscheinlichkeit von Sicherheitslücken
  • Behalten Sie Ihr Angriffsfläche auf ein Minimum
  • Stellen Sie sicher, dass Sie sicher ausfallen
  • Verwenden Sie Verteidigung in der Tiefe
  • Halten Sie sich an den Grundsatz der geringstes Privileg
  • Verwenden Sie Bedrohungsmodellierung
  • Kompartimentierung - Ihr System ist also nicht alles oder nichts
  • Geheimnisse zu verbergen ist schwer - und Geheimnisse, die in einem Code versteckt sind, bleiben nicht lange geheim
  • Schreiben Sie nicht Ihre eigene Kryptowährung
  • Die Verwendung von Krypto bedeutet nicht, dass Sie sicher sind (Angreifer werden nach einer schwächeren Verbindung suchen)
  • Achten Sie auf Pufferüberläufe und wie man sich vor ihnen schützen kann

Es gibt einige ausgezeichnete Bücher und Artikel im Internet, die sich mit der Sicherheit Ihrer Anwendungen befassen:

Schulung Ihrer Entwickler in den besten Praktiken der Anwendungssicherheit

Codebashing (bezahlt)

Innovation im Bereich Sicherheit (bezahlt)

Sicherheitskompass (bezahlt)

OWASP WebGoat (kostenlos)

105voto

Tyler McHenry Punkte 71707

Regel Nr. 1 der Sicherheit für Programmierer: Rollen Sie nicht Ihre eigenen

Es sei denn, Sie sind selbst ein Sicherheitsexperte und/oder Kryptograph, immer Verwenden Sie eine gut konzipierte, gut getestete und ausgereifte Sicherheitsplattform, ein Framework oder eine Bibliothek, um die Arbeit für Sie zu erledigen. Diese Dinge haben Jahre damit verbracht, von Experten und Hackern gleichermaßen durchdacht, gepatcht, aktualisiert und geprüft zu werden. Sie wollen diese Vorteile nutzen und sie nicht verwerfen, indem Sie versuchen, das Rad neu zu erfinden.

Das heißt aber nicht, dass Sie nichts über Sicherheit lernen müssen. Sie müssen auf jeden Fall genug wissen, um zu verstehen, was Sie tun, und um sicherzustellen, dass Sie die Tools richtig einsetzen. Wenn Sie sich jedoch jemals dabei ertappen, wie Sie anfangen, Ihren eigenen Kryptographiealgorithmus, Ihr eigenes Authentifizierungssystem, Ihre eigene Eingabesäuberung usw. zu schreiben, halten Sie inne, treten Sie einen Schritt zurück und erinnern Sie sich an Regel Nr. 1.

72voto

rook Punkte 64487

Jeder Programmierer sollte wissen, wie man Exploit-Code schreibt.

Wenn man nicht weiß, wie Systeme ausgenutzt werden, kann man Schwachstellen versehentlich ausschalten. Zu wissen, wie man Code patcht, ist absolut bedeutungslos, wenn man nicht weiß, wie man seine Patches testet. Sicherheit ist nicht nur ein Haufen Gedankenexperimente, man muss wissenschaftlich vorgehen und seine Experimente testen.

43voto

ericteubert Punkte 4471

Sicherheit ist ein Prozess, nicht ein Produkt.

Viele scheinen diesen offensichtlichen Sachverhalt zu vergessen.

23voto

jschmier Punkte 14832

Ich empfehle die Überprüfung CWE/SANS TOP 25 der gefährlichsten Programmierfehler . Sie wurde für 2010 aktualisiert und soll in Zukunft regelmäßig aktualisiert werden. Die 2009 Revision ist ebenfalls verfügbar.

Von http://cwe.mitre.org/top25/index.html

Die 2010 CWE/SANS Top 25 Most Dangerous Programming Errors ist eine Liste der am weitesten verbreiteten und kritischsten Programmierfehler, die zu schwerwiegenden Software-Schwachstellen führen können. Sie sind oft leicht zu finden und leicht auszunutzen. Sie sind gefährlich, weil sie es Angreifern häufig ermöglichen, die Software vollständig zu übernehmen, Daten zu stehlen oder zu verhindern, dass die Software überhaupt funktioniert.

Die Top-25-Liste ist ein Instrument zur Aufklärung und Sensibilisierung, das Programmierern helfen soll, die Art von Sicherheitslücken zu vermeiden, die die Softwareindustrie plagen, indem allzu häufige Fehler erkannt und vermieden werden, bevor die Software überhaupt ausgeliefert wird. Software-Kunden können diese Liste ebenfalls nutzen, um sicherere Software zu verlangen. Forscher auf dem Gebiet der Softwaresicherheit können die Top 25 nutzen, um sich auf eine kleine, aber wichtige Teilmenge aller bekannten Sicherheitsschwachstellen zu konzentrieren. Und schließlich können Software-Manager und CIOs die Top-25-Liste als Messlatte für den Fortschritt bei ihren Bemühungen um die Sicherheit ihrer Software verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X