In this article
Sichere Programmierung: Best Practices für alle Entwickler
Verhindern Sie Exploits und Angriffe mit besserem und sichererem Quellcode
In der heutigen vernetzten, softwareabhängigen Welt hat die Veröffentlichung sicherer Apps für Entwickler höchste Priorität. Die gute Nachricht: Viele potenzielle Exploits und Angriffe lassen sich durch besseren und sichereren Quellcode verhindern.
Quellcode besteht aus Anweisungen, die das Verhalten einer Anwendung definieren und ihre Funktionen bereitstellen. Er ist im Grunde die DNA einer Anwendung. Quellcode wird in Anweisungen übersetzt, die ein Computer anschließend liest und ausführt.
Was ist sicheres Programmieren?
Sicheres Programmieren bedeutet auch Secure Programming, Code in einer höheren Programmiersprache nach strengen Prinzipien zu schreiben, um potenzielle Sicherheitslücken zu verhindern, durch die Daten offengelegt oder gezielte Systeme beschädigt werden könnten.
Sicheres Programmieren umfasst mehr als nur das Schreiben, Kompilieren und Bereitstellen von Code in Anwendungen. Um Secure Programming vollständig umzusetzen, müssen Sie auch eine sichere Entwicklungsumgebung schaffen, die auf einer zuverlässigen und sicheren IT-Infrastruktur basiert und sichere Hardware, Software, Dienste und Anbieter nutzt.
Warum ist sichere Programmierung wichtig?
Immer mehr Finanztransaktionen werden online abgewickelt. Sicherheitsvorfälle haben ihren Ursprung häufig tief in der zugrunde liegenden Software einer Anwendung und können schwerwiegende Folgen für Unternehmen und Privatpersonen haben. Unsicherer Code in wichtigen Branchen (z. B. Finanzwesen, Gesundheitswesen, Energieversorgung und Transport) kann zu finanziellen Schäden und Sachschäden, Marktmanipulation und Diebstahl führen – sogar zu Verletzungen und Todesfällen.

Die Gefahr ist real: Medienberichte der vergangenen Jahre haben gezeigt, wie unsicher ein Großteil der von uns verwendeten Software ist. Selbst große Organisationen mit den erforderlichen Ressourcen und dem nötigen Know-how waren von schwerwiegenden Datenschutzverletzungen betroffen. Für Unternehmen, die Software für Verbraucher oder Unternehmen bereitstellen, ist das Vertrauen ihrer Kunden äußerst wertvoll. Ein Verlust dieses Vertrauens kann sich direkt auf ihren Geschäftserfolg auswirken. Sichere Programmierpraktiken müssen für diese Organisationen daher höchste Priorität haben.
Anwendungssicherheit, die die Entwicklung beschleunigt
Erfahren Sie mehr über die AppSec-Lösung von Snyk oder lesen Sie unseren Einkaufsleitfaden für Developer-Security-Tools.
Erste Schritte mit Techniken für sichere Programmierung
Bei sicheren Programmierpraktiken und Sicherheit im Allgemeinen gilt: Halten Sie den gesamten Prozess so einfach wie möglich (KISS). Komplexe Verfahren können zu uneinheitlichen Ergebnissen führen oder, schlimmer noch, vollständig ignoriert werden. Erfinden Sie das Rad nicht neu, sondern halten Sie sich an bewährte Sicherheitspraktiken und Best Practices für sichere Programmierung. Die OWASP Foundation bietet viele hilfreiche Ressourcen. Dazu gehört die OWASP Top 10, die die häufigsten Sicherheitsrisiken aufführt und daher einen guten Ausgangspunkt bietet.
Zugriffskontrolle, einschließlich Authentifizierung und Autorisierung, gehört zu den grundlegenden Bausteinen für den Schutz Ihres Systems.
Starke Verschlüsselung durchsetzen ist ein weiterer wichtiger Aspekt, um Ihr System zu schützen. Viele Bibliotheken sind sofort verfügbar und erleichtern die Implementierung von Verschlüsselung, sodass nur wenig eigener Code geschrieben werden muss. Wichtig ist jedoch, ausschließlich standardisierte Algorithmen und Bibliotheken zu verwenden. Wenn die Einhaltung von FIPS erforderlich ist, sollten Sie außerdem sicherstellen, dass nur validierte Bibliotheken zum Einsatz kommen.
Secrets-Management ist eine weitere wichtige Sicherheitsmaßnahme. Unabhängig davon, ob Sie eines der vielen verfügbaren Tools zur Verwaltung von Secrets verwenden: Hinterlegen Sie niemals Secrets wie Passwörter oder Zugriffsschlüssel fest im Code und laden Sie sie nicht in Code-Repositories hoch.
Die oben genannten Maßnahmen schützen Ihr System und bilden damit die erste Verteidigungslinie. Genauso wichtig ist es jedoch, Ihren Code selbst sicherer zu machen.
5 Best Practices für Ihre Checkliste für sichere Programmierung:
Code-Minifizierung und -Verschleierung: Wenn Ihr Code schwerer zugänglich und damit schwerer lesbar ist, kann das potenzielle Angreifer abschrecken. In der JavaScript-Welt ist die Minifizierung von Code eine gängige Praxis. Dabei werden Leerzeichen und Zeilenumbrüche aus dem Code entfernt. Obwohl sie vor allem die Performance durch eine Verringerung der Größe von Code-Dateien verbessern soll, hat sie den zusätzlichen Vorteil, offengelegten Code deutlich schwerer lesbar zu machen. Eine ähnliche, aber wirksamere Technik ist die Code-Verschleierung, bei der menschenlesbarer Code in schwer verständlichen Text umgewandelt wird.
Keine Abkürzungen nehmen: Entwickler können versucht sein, Abkürzungen zu nehmen, um Code schneller in die Produktion zu bringen. Das kann jedoch schwerwiegende Sicherheitsfolgen haben. Angriffe erfolgen zum Beispiel häufig, wenn fest im Code hinterlegte Anmeldedaten und Sicherheitstokens als Kommentare zurückbleiben. Solche Informationen müssen lange vor der Veröffentlichung Ihrer Apps entfernt werden. Mit zunehmender Größe der Codebasis und wachsendem Druck, unter immer engeren Release-Zeitplänen funktionierenden Code bereitzustellen, steigt jedoch auch die Wahrscheinlichkeit von Sicherheitslücken.
Automatisierte Scans und Code-Reviews: Cross-Site-Scripting (XSS), SQL-Injection und andere Angriffsarten können Sicherheitslücken in Ihrem Code ausnutzen. XSS- und SQL-Injection-Angriffe gehen auf Schwachstellen in Ihrem Code zurück, durch die Daten und Befehle nicht voneinander unterschieden werden. XSS führt schädlichen Code unter Ihrer Domain aus. SQL-Injection-Angriffe zielen darauf ab, Daten in Ihren internen Datenspeichern zu stehlen oder zu manipulieren. Eine Kombination aus regelmäßigen Code-Reviews mit Fokus auf Sicherheit und automatisierten Tools, die Ihren Code auf diese Schwachstellen überprüfen, kann solche Angriffe verhindern.
Komponenten mit bekannten Schwachstellen vermeiden: Open-Source-Komponenten und -Bibliotheken, die häufig als Pakete eingebunden werden, können Entwicklern zwar Zeit und Aufwand sparen, sind aber auch ein gängiger Einstiegspunkt für Angreifer und eine häufige Quelle von Schwachstellen und potenziellen Exploits. Wenn Sie Komponenten mit bekannten Schwachstellen meiden und die von Ihnen verwendeten Komponenten während des gesamten Entwicklungsprozesses kontinuierlich auf neue Schwachstellen überwachen, bleibt Ihr Code intakt.
Audits und Logging: Software mit ausreichendem Logging und Monitoring hilft Ihnen, potenzielle Vorfälle zu erkennen, wenn Ihr Code in einer Produktionsumgebung bereitgestellt wird.
Snyk gehört zu den besten kostenlosen Tools zum Scannen und Überwachen der Sicherheit Ihres Codes. Mit einem Open-Source-Schwachstellenscanner oder Snyk Code können Sie Schwachstellen im Code mit einer entwicklerfreundlichen Lösung finden und beheben.
Das große Ganze
Wenn Sie die Grundlagen abgedeckt haben, können Sie weitere Schritte unternehmen, um Ihren Code noch besser abzusichern. Der erste Schritt ist ein mehrschichtiger Sicherheitsansatz. Best Practices zu befolgen und sicheren Code zu schreiben, ist nur ein Teil davon.
Der Aufbau einer Sicherheitskultur in Ihrer Organisation ist ein weiterer entscheidender Aspekt. Dazu gehört, Entwickler, IT, das Organisationsmanagement sowie interne und externe Stakeholder zu schulen. Sie sollten außerdem aktiv Threat Models erstellen und die Verwaltung potenzieller Risiken sowie deren Behebung planen. Dafür stehen verschiedene Ressourcen zur Verfügung, darunter OWASP und Have I Been Pwned.
Der Aufbau eines sicheren Softwareentwicklungslebenszyklus (SSDLC) ist ein weiterer wichtiger Schritt, um sichere Programmierpraktiken und Codequalität in Ihren Softwareentwicklungsprozess zu integrieren. Dazu gehört, Anwendungen in jeder Phase zu erstellen und zu pflegen – von der anfänglichen Erfassung der Anforderungen für eine neue Anwendung (oder für das Hinzufügen von Funktionen zu einer bestehenden App) bis hin zu Entwicklung, Tests, Bereitstellung und Wartung. Bereits in dieser frühen Phase der Anforderungserfassung sollten die Projektverantwortlichen die Anforderungen prüfen und potenzielle Sicherheitsrisiken kennzeichnen, insbesondere solche, die mit dem Quellcode zusammenhängen.
Der Einsatz automatisierter Tools im Rahmen Ihres SSDLC oder anderer Initiativen für sichere Programmierung kann Ihnen Zeit und Aufwand sparen. SAST ist ein Beispiel dafür und lässt sich bereits sehr früh im Entwicklungszyklus einsetzen.
Herkömmliche Tools für statische Anwendungssicherheitstests (SAST) sind durch lange Scan-Zeiten und geringe Genauigkeit eingeschränkt. Sie liefern zu viele False Positives und untergraben das Vertrauen der Entwickler. Snyk Code sorgt dafür, dass Entwickler effizient arbeiten und konkrete Ergebnisse erzielen. Die semantische Code-Analyse in Echtzeit liefert direkt beim Schreiben des Codes umsetzbare Vorschläge und sorgt so für Geschwindigkeit und Qualität im Entwicklungsworkflow.
Bewährte Richtlinien für sichere Programmierung
Da Software zu einem festen Bestandteil unseres Alltags geworden ist, sind die Sicherheit und Integrität des zugrunde liegenden Quellcodes entscheidend. Viele der hier beschriebenen Techniken für sichere Programmierung sind nicht neu und erfahrenen Entwicklern vertraut. Doch wenn Sie es einfach halten und anerkannte Branchen- und Standards für sichere Programmierung sowie Verfahren befolgen, können Sie Ihre Angriffsfläche – einschließlich der Anzahl möglicher Einstiegspunkte – deutlich verringern und sichere Software bereitstellen.
FAQ zu sicherer Programmierung
Was versteht man unter sicheren Programmierpraktiken?
Sichere Programmierpraktiken umfassen das Schreiben von Code, um potenzielle Sicherheitslücken zu verhindern. Dazu gehört, sowohl Ihren Quellcode als auch alle Bibliotheken von Drittanbietern sicher zu halten.
Was bedeutet sicheres Programmieren nach OWASP?
Sicheres Programmieren nach OWASP umfasst Best Practices und Richtlinien für sicheres Programmieren, die von der Open Source Foundation for Application Security herausgegeben werden. Sie beschreiben sowohl allgemeine Prinzipien der Softwaresicherheit als auch Anforderungen an sicheres Programmieren.
Was ist ein Code-Sicherheitsreview?
Ein Code-Sicherheitsreview ist der Prozess, potenzielle Schwachstellen in Ihrem Code zu identifizieren und zu beheben. Das kann manuell, mithilfe automatisierter Tools oder durch eine Kombination aus beidem erfolgen.
Scannen und testen Sie Ihren Code kontinuierlich mit Snyk auf bekannte Schwachstellen. Sie können auch unser kostenloses Code-Checker-Tool ausprobieren.
Von Entwicklern geschätzt. Von der Security vertraut.
Die Developer-first-Tools von Snyk bieten integrierte und automatisierte Security, die Ihren Governance- und Compliance-Anforderungen gerecht wird.