Freigeben über


Entwickeln sicherer Anwendungen in Azure

In diesem Artikel stellen wir Sicherheitsaktivitäten und -steuerelemente vor, die Sie berücksichtigen sollten, wenn Sie Anwendungen für die Cloud entwickeln. Sicherheitsfragen und Konzepte, die während der Implementierungs- und Überprüfungsphase des Microsoft Security Development Lifecycle (SDL) berücksichtigt werden sollen, werden behandelt. Ziel ist es, Aktivitäten und Azure-Dienste zu definieren, mit denen Sie eine sicherere Anwendung entwickeln können.

Die folgenden SDL-Phasen werden in diesem Artikel behandelt:

  • Implementation
  • Verification

Implementation

Der Schwerpunkt der Implementierungsphase liegt darin, bewährte Methoden für frühzeitige Prävention zu etablieren und Sicherheitsprobleme aus dem Code zu erkennen und zu entfernen. Gehen Sie davon aus, dass Ihre Anwendung auf eine Art und Weise verwendet wird, die Sie nicht vorgesehen haben. Auf diese Weise können Sie vor versehentlichem oder absichtlichem Missbrauch Ihrer Anwendung schützen.

Ausführen von Codeüberprüfungen

Bevor Sie den Code einchecken, führen Sie Codeüberprüfungen durch, um die allgemeine Codequalität zu erhöhen und das Risiko der Erstellung von Fehlern zu verringern. You can use Visual Studio to manage the code review process.

Ausführen einer statischen Codeanalyse

Statische Codeanalyse (auch als Quellcodeanalyse bezeichnet) wird als Teil einer Codeüberprüfung durchgeführt. Statische Codeanalyse bezieht sich häufig auf das Ausführen statischer Codeanalysetools, um potenzielle Sicherheitsrisiken in nicht ausgeführtem Code zu finden. Static code analysis uses techniques like taint checking and data flow analysis.

Azure Marketplace offers developer tools that perform static code analysis and assist with code reviews.

Validieren und Bereinigen aller Eingaben Ihrer Anwendung

Behandeln Sie alle Eingaben als nicht vertrauenswürdig, um Ihre Anwendung vor den häufigsten Sicherheitsrisiken für Webanwendungen zu schützen. Nicht vertrauenswürdige Daten sind ein Fahrzeug für Injektionsangriffe. Eingaben für Ihre Anwendung umfassen Parameter in der URL, Eingaben des Benutzers, Daten aus der Datenbank oder aus einer API und alles, was übergeben wird und das ein Benutzer potenziell manipulieren könnte. An application should validate that data is syntactically and semantically valid before the application uses the data in any way (including displaying it back to the user).

Überprüfen Sie die Eingabe frühzeitig im Datenfluss, um sicherzustellen, dass nur ordnungsgemäß gebildete Daten in den Workflow eingegeben werden. Sie möchten nicht, dass falsch formatierte Daten in Ihrer Datenbank beibehalten werden oder eine Fehlfunktion in einer nachgeschalteten Komponente ausgelöst wird.

Aufnehmen in die Sperrliste und Setzen auf die Positivliste sind zwei allgemeine Ansätze zur Durchführung einer Syntaxüberprüfung der Eingabe:

  • Blocklisting versucht, zu überprüfen, ob eine bestimmte Benutzereingabe keine "bekanntermaßen böswilligen" Inhalte enthält.

  • Allowlisting versucht zu überprüfen, ob eine bestimmte Benutzereingabe mit einer Reihe von "bekannten" Eingaben übereinstimmt. Zeichenbasierte Zulassungsliste ist eine Form der Zulassungsliste, bei der eine Anwendung überprüft, ob die Benutzereingabe nur "bekannte gute" Zeichen enthält oder dass die Eingabe einem bekannten Format entspricht.

    Dies kann beispielsweise dazu führen, dass ein Benutzername nur alphanumerische Zeichen enthält oder dass er genau zwei Zahlen enthält.

Allowlisting ist der bevorzugte Ansatz zum Erstellen sicherer Software. Blocklisting ist anfällig für Fehler, da es unmöglich ist, eine vollständige Liste potenziell schlechter Eingaben zu betrachten.

Führen Sie diese Arbeit auf dem Server aus, nicht auf der Clientseite (oder sowohl auf dem Server als auch auf der Clientseite).

Überprüfen Sie die Ausgaben Ihrer Anwendung

Jede Ausgabe, die Sie entweder visuell oder innerhalb eines Dokuments darstellen, sollte immer codiert und mit Escapezeichen versehen sein. Escaping, also known as output encoding, is used to help ensure that untrusted data isn't a vehicle for an injection attack. Das Versehen mit Escapezeichen in Kombination mit Datenüberprüfung bietet Verteidigungsebenen, um die Sicherheit des Systems als Ganzes zu erhöhen.

Escaping makes sure that everything is displayed as output. Escaping also lets the interpreter know that the data isn't intended to be executed, and this prevents attacks from working. This is another common attack technique called cross-site scripting (XSS).

Wenn Sie ein Webframework von einem Drittanbieter verwenden, können Sie Ihre Optionen für die Ausgabecodierung auf Websites überprüfen, indem Sie die OWASP XSS Prevention-Kurzanleitung verwenden.

Verwenden parametrisierter Abfragen, wenn Sie sich an die Datenbank wenden

Erstellen Sie niemals eine Inlinedatenbankabfrage "on the fly" in Ihrem Code, und senden Sie sie direkt an die Datenbank. Bösartiger Code, der in Ihre Anwendung eingefügt wurde, kann dazu führen, dass Ihre Datenbank gestohlen, zurückgesetzt oder geändert wird. Ihre Anwendung kann auch verwendet werden, um schädliche Betriebssystembefehle auf dem Betriebssystem auszuführen, das Ihre Datenbank hostet.

Verwenden Sie stattdessen parametrisierte Abfragen oder gespeicherte Prozeduren. Wenn Sie parametrisierte Abfragen verwenden, können Sie die Prozedur aus Ihrem Code sicher aufrufen und eine Zeichenfolge übergeben, ohne sich Sorgen machen zu müssen, dass sie als Teil der Abfrageanweisung behandelt wird.

Entfernen von Standardserverheadern

Header wie Server, X-Powered-By und X-AspNet-Version zeigen Informationen über den Server und die zugrunde liegenden Technologien an. Es wird empfohlen, diese Header zu unterdrücken, um die Erstellung eines Fingerabdrucks der Anwendung zu vermeiden. Siehe Entfernen von Standardserverheadern auf Azure-Websites.

Trennen Ihrer Produktionsdaten

Ihre Produktionsdaten oder "reale" Daten sollten nicht für Entwicklung, Tests oder einen anderen Zweck als den beabsichtigten Geschäftszweck verwendet werden. A masked (anonymized) dataset should be used for all development and testing.

Dies bedeutet, dass weniger Personen Zugriff auf Ihre realen Daten haben, wodurch Ihre Angriffsfläche reduziert wird. Es bedeutet auch, dass weniger Mitarbeiter personenbezogene Daten sehen, wodurch eine potenzielle Vertraulichkeitsverletzung beseitigt wird.

Implementieren einer Richtlinie für sichere Kennwörter

Um gegen brute-force- und wörterbuchbasiertes Erraten zu schützen, müssen Sie eine Richtlinie für sichere Kennwörter implementieren, um sicherzustellen, dass Benutzer ein komplexes Kennwort erstellen (z. B. mindestens 12 Zeichen und alphanumerische und Sonderzeichen).

Microsoft Entra External ID in externen Mandanten unterstützt Sie bei der Verwaltung von Kennwörtern, indem die Self-Service-Kennwortzurücksetzung und weitere Funktionen bereitgestellt werden.

Um Angriffe auf Standardkonten zu verteidigen, stellen Sie sicher, dass alle Schlüssel und Kennwörter austauschbar sind und dass sie nach der Installation von Ressourcen generiert oder ersetzt werden.

Wenn die Anwendung Kennwörter automatisch generiert, stellen Sie sicher, dass die generierten Kennwörter zufällig sind und dass sie eine hohe Entropie aufweisen.

Überprüfen von Dateiuploads

If your application allows file uploads, consider precautions that you can take for this risky activity. Der erste Schritt in vielen Angriffen besteht darin, schädlichen Code in ein System zu integrieren, das angegriffen wird. Die Verwendung eines Dateiuploads hilft dem Angreifer, dies zu erreichen. OWASP bietet Lösungen zum Überprüfen einer Datei, um sicherzustellen, dass die datei, die Sie hochladen, sicher ist.

Der Antischadsoftwareschutz hilft beim Identifizieren und Entfernen von Viren, Spyware und anderer Schadsoftware. You can install Microsoft Antimalware or a Microsoft partner's endpoint protection solution (Trend Micro, Broadcom, McAfee, Microsoft Defender Antivirus in Windows, and Endpoint Protection).

Microsoft Antimalware includes features like real-time protection, scheduled scanning, malware remediation, signature updates, engine updates, samples reporting, and exclusion event collection. Sie können Microsoft Antimalware und Partnerlösungen zur Vereinfachung der Bereitstellung und für integrierte Erkennungen (Warnungen und Vorfälle) mit Microsoft Defender für Cloud kombinieren.

Vertrauliche Inhalte nicht zwischenspeichern

Speichern Sie vertrauliche Inhalte nicht im Browser-Cache. Browser können Informationen zum Zwischenspeichern und Verlauf speichern. Zwischengespeicherte Dateien werden in einem Ordner wie dem Ordner "Temporäre Internetdateien" im Fall von Internet Explorer gespeichert. Wenn auf diese Seiten erneut verwiesen wird, zeigt der Browser die Seiten aus dem Cache an. If sensitive information (address, credit card details, Social security number, username) is displayed to the user, the information might be stored in the browser's cache and be retrievable by examining the browser's cache or by pressing the browser's Back button.

Verification

Die Überprüfungsphase umfasst einen umfassenden Aufwand, um sicherzustellen, dass der Code die Sicherheits- und Datenschutz-Tenets erfüllt, die in den vorherigen Phasen eingerichtet wurden.

Suchen und Beheben von Sicherheitsrisiken in Ihren Anwendungsabhängigkeiten

Sie scannen Ihre Anwendung und ihre abhängigen Bibliotheken, um bekannte anfällige Komponenten zu identifizieren. Produkte, die für diese Überprüfung verfügbar sind, sind OWASP-Abhängigkeitsprüfung, Snyk und Black Duck.

Testen der Anwendung in einem Betriebszustand

Dynamische Anwendungssicherheitstests (DAST) ist ein Prozess zum Testen einer Anwendung in einem Betriebszustand, um Sicherheitsrisiken zu finden. DAST-Tools analysieren Programme, während sie ausgeführt werden, um Sicherheitsrisiken wie Speicherbeschädigungen, unsichere Serverkonfiguration, standortübergreifende Skripterstellung, Benutzerberechtigungsprobleme, SQL-Einfügung und andere wichtige Sicherheitsbedenken zu finden.

DAST unterscheidet sich von statischen Anwendungssicherheitstests (SAST). SAST-Tools analysieren Quellcode oder kompilierte Codeversionen, wenn der Code nicht ausgeführt wird, um Sicherheitsfehler zu finden.

Perform DAST, preferably with the assistance of a security professional (a penetration tester or vulnerability assessor). Wenn ein Sicherheitsfachmann nicht verfügbar ist, können Sie DAST selbst mit einem Webproxyscanner und einigen Schulungen durchführen. Schließen Sie frühzeitig einen DAST-Scanner an, um sicherzustellen, dass Sie keine offensichtlichen Sicherheitsprobleme in Ihren Code einführen. See the OWASP site for a list of web application vulnerability scanners.

Durchführen von Fuzzing

In fuzz testing, you induce program failure by deliberately introducing malformed or random data to an application. Durch das Einleiten von Programmfehlern können potenzielle Sicherheitsprobleme angezeigt werden, bevor die Anwendung veröffentlicht wird.

Die Erkennung von Sicherheitsrisiken ist der eindeutige Microsoft-Fuzz-Testdienst zum Suchen sicherheitskritischer Fehler in Software.

Durchführung einer Überprüfung der Angriffsfläche

Wenn Sie die Angriffsfläche nach Abschluss des Codes überprüfen, können Sie sicherstellen, dass alle Entwurfs- oder Implementierungsänderungen an einer Anwendung oder einem System berücksichtigt wurden. Dadurch wird sichergestellt, dass alle neuen Angriffsvektoren, die aufgrund der Änderungen, einschließlich Bedrohungsmodellen, erstellt wurden, überprüft und abgemildert wurden.

Sie können ein Bild der Angriffsfläche erstellen, indem Sie die Anwendung scannen. Microsoft bietet ein Angriffsflächenanalysetool namens Attack Surface Analyzer. Sie können aus vielen kommerziellen dynamischen Tests und Sicherheitslücken-Scan-Tools oder -Diensten wählen, darunter OWASP Attack Surface Detector, Arachni und w3af. Diese Scantools durchforsten Ihre App und ordnen die Teile der Anwendung zu, auf die über das Web zugegriffen werden kann. You can also search the Azure Marketplace for similar developer tools.

Ausführen von Penetrationstests

Sicherstellen, dass Ihre Anwendung sicher ist, ist ebenso wichtig wie das Testen anderer Funktionen. Make penetration testing a standard part of the build and deployment process. Planen Sie regelmäßige Sicherheitstests und Überprüfungen auf Sicherheitsrisiken für bereitgestellte Anwendungen, und überwachen Sie das System auf offene Ports, Endpunkte und Angriffe.

Ausführen von Sicherheitsüberprüfungstests

Azure Tenant Security Solution (AzTS) aus dem Secure DevOps Kit für Azure (AzSK) enthält SVTs für mehrere Dienste der Azure-Plattform. Sie führen diese SVTs regelmäßig aus, um sicherzustellen, dass Ihr Azure-Abonnement und die verschiedenen Ressourcen, die Ihre Anwendung umfassen, in einem sicheren Zustand sind. Sie können diese Tests auch automatisieren, indem Sie die Erweiterungsfunktion für kontinuierliche Integration/kontinuierliche Bereitstellung (CI/CD) von AzSK verwenden, die SVTs als Visual Studio-Erweiterung zur Verfügung stellt.

Next steps

In den folgenden Artikeln empfehlen wir Sicherheitskontrollen und -aktivitäten, mit denen Sie sichere Anwendungen entwerfen und bereitstellen können.