Heim >Java >javaLernprogramm >Erfahren Sie, wie Sie die Sicherheit von Webanwendungen gewährleisten können

Erfahren Sie, wie Sie die Sicherheit von Webanwendungen gewährleisten können

怪我咯
怪我咯Original
2017-06-25 10:19:052639Durchsuche

Webanwendungen stehen heute bei den meisten Unternehmensanwendungen im Vordergrund. Webanwendungen können in einer komplexen Hybridarchitektur viele verschiedene Funktionen ausführen. Die Anwendungen reichen von serviceorientierten Lösungen, die auf den neuesten Cloud-Technologien laufen, über ältere mehrschichtige Webanwendungen bis hin zu Webportalen, die Kunden den Zugriff auf Legacy-Anwendungen auf Mainframes ermöglichen.

Die Bewältigung der mit diesen komplexen Webanwendungen verbundenen Risiken ist eine unumgängliche Anforderung für Unternehmen, und die Sicherheit des zugrunde liegenden Codes, auf dem diese Webanwendungen ausgeführt werden, wirkt sich direkt auf das Risikoprofil der für die Anwendungen des Unternehmens verfügbaren Daten aus. Leider ist die Entwicklung wiederholbarer und effizienter Sicherheitspraktiken für Webanwendungen keine einfache Aufgabe. Viele Unternehmen versuchen, Postproduktionslösungen zu nutzen, um Sicherheitskontrollen bereitzustellen, beispielsweise Webanwendungs-Firewalls und Intrusion-Prevention-Systeme.

Aber mit der Bereitstellung von Sicherheitsmechanismen erst in der Produktionsphase des Lebenszyklus zu warten, ist etwas zu spät und ihre Wirksamkeit ist zu gering. Design- oder Architekturprobleme lassen sich zu Beginn des Lebenszyklus leichter lösen, als zu warten, bis die Anwendung in Produktion ist, kann extrem kostspielig sein. Sicherheitslücken in Webanwendungen können zu Datenlecks und Richtlinienverstößen führen, und Patching nach der Bereitstellung oder umfassende Codekorrekturen können die Gesamtkosten erheblich erhöhen.

Um Effektivität und Effizienz zu gewährleisten, muss die Sicherheit von Webanwendungen von der Anforderungsdefinitionsphase bis zur endgültigen Abnahmephase reichen. Dieser Ansatz erfordert, dass alle Designer während des gesamten Prozesses als Team zusammenarbeiten können. In Phasen wie der Implementierung und dem Testen kann der Einsatz automatisierter Tools, die einer Strategie folgen, wiederholbare Tests unterstützen und zu schnelleren Entwicklungszyklen führen, da der Testprozess standardisiert ist.

Der Aufbau von Sicherheit bereits in den frühesten Phasen des Entwicklungsprozesses muss nicht kompliziert sein. Die Implementierung von Sicherheitsüberprüfungen und -ausgleichen während des gesamten Entwicklungszyklus ermöglicht schnellere Release-Zyklen und kann Schwachstellen in Webanwendungen erheblich reduzieren.

Die hohen Kosten für die Implementierung von Sicherheitstests spät im Entwicklungszyklus

Die Einbeziehung von Sicherheitskontrollpunkten in den Entwicklungsprozess kann tatsächlich die Gesamtlieferzeit verkürzen. Es mag kontraintuitiv klingen, aber die Kosten, die mit der Korrektur von Design- und Codierungsfehlern nach der Bereitstellung einer Webanwendung in der Produktion verbunden sind, sind extrem hoch.

In vielen Entwicklungsumgebungen erscheinen Sicherheits- und Audit-Experten beispielsweise tendenziell am Ende des Entwicklungszyklus. Zu diesem Zeitpunkt ist die Anwendung abgeschlossen und etwaige Verzögerungen werden als unnötige Engpässe angesehen. Der starke Druck von Unternehmen, Softwareprodukte schnell einzuführen, führt dazu, dass Sicherheitskontrollen übersehen werden, was dazu führt, dass Webanwendungen keiner ordnungsgemäßen Sicherheitsprüfung unterzogen werden. Selbst wenn ein Scan-Tool in dieser äußerst zeitkritischen Umgebung eine große Anzahl von Schwachstellen ohne Validierung und Priorisierung meldet, kann ein solcher Scan mehr schaden als nützen.

Die Durchführung von Sicherheitsüberprüfungen spät im Entwicklungsprozess und nicht gemeinsam während des gesamten Entwicklungszyklus kann zu Verzögerungen bei der Veröffentlichung führen, insbesondere wenn einige schwerwiegende Fehler entdeckt werden. Die Kosten für die Behebung von Design- und Codierungsfehlern zu einem späteren Zeitpunkt im Entwicklungszyklus sind viel höher als die Kosten für deren frühzeitige Erkennung. Eine Studie der National Science Foundation schätzt, dass die Kosten etwa 100-mal niedriger sind, wenn schwerwiegende Softwareprobleme während der Anforderungs- und Entwurfsphase entdeckt und behoben werden, als wenn das Problem entdeckt wird, nachdem die Software in Produktion gegangen ist.

Beim Einbau von Sicherheit in eine Webanwendung besteht das Ziel in den meisten Fällen nicht darin, eine undurchdringliche Webanwendung zu erstellen oder jede mögliche Schwachstelle zu beseitigen. Stattdessen sollte das Ziel darin bestehen, die erforderlichen Merkmale mit dem akzeptierten Risikoprofil für die Webanwendung abzugleichen. Während des gesamten Entwicklungszyklus einer Webanwendung sollte das Ziel darin bestehen, Softwaresicherheit zu erreichen, d Die Software kann also angegriffen werden.

Vorteile eines integrierten Ansatzes

Wenn Entwickler aus verschiedenen Gruppen als Team zusammenarbeiten, führt dies zu einer hohen Effizienz im Entwicklungsprozess von Webanwendungen. Während Sicherheitsexperten oft beklagen, dass Unternehmensleiter Softwarerisiken einfach nicht verstehen, ist es auch wichtig, dass Sicherheitsexperten mit Geschäftsrisiken vertraut sind. Die Entwicklung von Webanwendungen mit angemessener Softwaresicherheit erfordert Kompromisse beim Risikomanagement zwischen Geschäftsanforderungen, Verfügbarkeit und Sicherheit. Um die richtige Balance zu erreichen, müssen die Bedürfnisse aller Entwickler erfasst werden.

Von Beginn der Softwareentwicklung an sollten bei der Anforderungsdefinition und dem Anwendungsdesign sowohl Sicherheitsanforderungen als auch funktionale Anforderungen und Geschäftsanforderungen berücksichtigt werden. Diese Informationen sollten den Designern und Softwareentwicklern mitgeteilt werden, bevor Code geschrieben wird. Dieser Ansatz kann die meisten oder alle Schwachstellen im Sicherheitsdesign und in der Architektur verhindern.

Allerdings schließt ein sicherheitsorientiertes Softwaredesign nicht alle mit Webanwendungen verbundenen Schwachstellen aus. Entwickler selbst müssen in sicheren Codierungstechniken geschult werden, um sicherzustellen, dass beim Entwurf von Anwendungen keine Sicherheitslücken entstehen. Wenn Entwicklern auf sichere Weise Einblick in die Entwicklungssprache und die Laufzeitumgebung gewährt wird, können bessere Codierungspraktiken unterstützt und die endgültige Webanwendung weniger fehlerhaft gemacht werden. Ein weiterer Effizienzvorteil der Einbeziehung von Sicherheit in den Designprozess ist die Möglichkeit, Missbrauchsszenarien während der Anforderungen und des Designs festzulegen. Dies während der Test- und Empfangsphase zu tun, spart Zeit und hilft, Engpässe zu vermeiden.

Die Vorteile integrierter synthetischer Tests

Die integrierte synthetische Analysemethode des Softwaretests kann die Effizienz erheblich verbessern. Spezifische Plug-ins für integrierte Entwicklungsumgebungen warnen Programmierer, wenn sie Programmierfehler im Code des Benutzers entdecken. Die statische Analyse, auch bekannt als „White-Box“-Test, ist eine Technik, die von Entwicklern und Prüfern an verschiedenen Modulen angewendet wird, bevor sie zu einem Endprodukt zusammengefügt werden. Die statische Analyse ermöglicht einen Insider-Einblick in eine Anwendung auf Codeebene. Die statische Analyse ist effektiv bei der Suche nach Syntaxfehlern und Fehlern auf Codeebene, eignet sich jedoch nicht zur Bestimmung, ob ein Fehler zu einer ausnutzbaren Schwachstelle führt.

Dynamische Analysen und manuelle Penetrationstests sind wirksam bei der Überprüfung, ob eine Anwendung angreifbar ist. Es wird auch als „Black-Box-Test“ bezeichnet. Es zeigt hauptsächlich die Inspektion und Analyse der Anwendung durch Außenstehende. Es kann eine eingehende Prüfung der in Produktion genommenen Anwendung durchführen, um festzustellen, ob es für Angreifer einfach ist, ihre Schwachstellen auszunutzen. Allerdings können dynamische Testtechniken erst in späteren Phasen der Softwareentwicklung, also erst in der Post-Generierungsphase, eingesetzt werden. Eine weitere Einschränkung dynamischer Tests besteht darin, dass es schwierig sein kann, die Codequelle im Code zu finden, die die Schwachstelle verursacht.

Aus diesem Grund ist es wichtig, statische und dynamische Tests in einer „Grey Box“ oder einem kombinierten Ansatz für Hybridtests zu kombinieren. Durch die Kombination der Ergebnisse interner Inspektionen auf Codeebene mit dynamischen externen Inspektionen können Sie das Beste beider Technologien nutzen. Der Einsatz statischer und dynamischer Bewertungstools ermöglicht es Managern und Entwicklern, Anwendungen, Module und Schwachstellen zu priorisieren und die Probleme mit den größten Auswirkungen zuerst anzugehen. Ein weiterer Vorteil des kombinierten Analyseansatzes besteht darin, dass durch dynamische Tests identifizierte Schwachstellen mithilfe statischer Tools auf bestimmte Codezeilen oder -blöcke zurückgeführt werden können. Dies erleichtert die kollaborative Kommunikation zwischen Test- und Entwicklungsteams und macht es für Sicherheits- und Testexperten einfacher, Entwicklern konkrete, umsetzbare Anleitungen zur Behebung von Problemen zu geben.

Sicherheit in den Software-Lebenszyklus einbauen: Praktische Methoden

Sicherheit aufzubauen erfordert Menschen, Prozesse sowie Technologien und Methoden. Obwohl es zahlreiche Tools gibt, die dabei helfen können, den Prozess der Härtung der Sicherheit von Webanwendungen zu automatisieren, wird kein Tool ohne die richtigen Prozesse und geschultes Personal zum Erstellen und Testen von Webanwendungen wirklich effektiv sein.

Dieser Prozess sollte einen formellen Softwareentwicklungszyklus und eine veröffentlichte Strategie umfassen. Darüber hinaus ist es wichtig, Rollen für alle Entwickler festzulegen und Inspektions- und Überwachungsaufgaben zuzuweisen. Sicherheit und Geschäft sollten in jeder Phase des Softwareentwicklungszyklus vertreten sein, damit das Risikomanagement bei jedem Schritt berücksichtigt werden kann.

Während des gesamten Softwareentwicklungszyklus ist Bildung ein nützliches und ewiges Thema. Bildung ist für Entwickler wichtig und kommt allen zugute, die an der Entwicklung von Webanwendungen beteiligt sind. Denn das Sicherheitsbewusstsein muss sowohl von oben nach unten als auch von unten nach oben erfolgen. Unterschätzen Sie nicht, wie wichtig es ist, Manager darüber aufzuklären, wie sich Schwachstellen in Webanwendungen auf das Unternehmen auswirken können. Einer Führungskraft zu sagen, dass eine Webanwendung anfällig für Cross-Site Request Forgery (CSRF) ist, mag verwirrend sein, aber ihm zu zeigen, wie ein Softwarefehler zur Offenlegung von Kundendaten führen kann, kann ihm die Unsicherheit und die tatsächlichen Folgen bewusst machen Webanwendungen. Konkrete Fälle und Kennzahlen sollten vorbereitet werden, um potenzielle verschiedene Kosteneinsparungen zu veranschaulichen. Zeigen Sie beispielsweise, dass Investitionen in Entwicklerschulungen und statische Analyse-Plug-ins für IDEs die Quellen von Datenlecks in Softwareanwendungen verhindern können, bevor sie ihren Code überprüfen.

Prüfer und Gutachter können sich über häufige Codierungsfehler informieren, deren Folgen beurteilen und mit dem „Ökosystem“ der Webanwendung interagieren (einschließlich Back-End-Unterstützungssystemen, vorhandenen Sicherheitskontrollen und allem, was Teil der Webanwendung ist). Umgebung). Tester und Qualitätsbewertungsexperten sollten mit Missbrauchsszenarien und deren Abweichungen von der Anwendung der Norm vertraut sein. Sie sollten auch wissen, wie Sicherheitstestergebnisse zu interpretieren sind, und in der Lage sein, die Ergebnisse nach Bedarf zu priorisieren.

Konzentrieren Sie sich auf bestimmte Schritte im Softwareentwicklungszyklus, bei denen Möglichkeiten zur Effizienzsteigerung bei gleichzeitiger Implementierung von Sicherheits- und Risikomanagement bestehen.

Anforderungen

Webanwendungsdesigner sind mit der Definition funktionaler und geschäftlicher Anforderungen bestens vertraut, verstehen jedoch möglicherweise nicht, wie Sicherheitsanforderungen definiert werden. An diesem Punkt muss das gesamte Team zusammenarbeiten, um zu entscheiden, welche Sicherheitskontrollen für die endgültige Webanwendung von entscheidender Bedeutung sind.

Schritte zur Integration der Sicherheit in die Anforderungsphase

 1. Besprechen und definieren Sie Sicherheitsanforderungen basierend auf Unternehmensrichtlinien, Compliance und behördlichen Anforderungen.

2. Sicherheits- und Auditteams sollten die Geschäftsanforderungen und Funktionalität der Webanwendung bewerten und während des Tests und der Abnahme mit der Entwicklung von Missbrauchsfällen (Missbrauchsszenarien) beginnen.

Es gibt zwei Vorteile: Zum einen werden Sicherheits- oder Verstöße im Voraus beseitigt oder reduziert, zum anderen wird die Bereitstellungszeit verkürzt.

Architektur und Design

Nachdem nun die Architektur und das Design der Webanwendung definiert wurden, besteht der nächste Schritt darin, Sicherheitsprobleme zu bewerten. In dieser Phase können kostspielige und schwer zu behebende Sicherheitsprobleme dann behoben werden, wenn sie am besten lösbar sind. Um kostspielige Fehler zu vermeiden, sollte die Architektur des Programms sowohl aus Leistungs- als auch aus Sicherheitsgründen bewertet werden. Detaillierte Designspezifikationen werden zusammengestellt, um Entwicklern zu zeigen, welche Sicherheitskontrollen enthalten sein sollten und wie die Komponenten der Anwendung mit der gesamten Webanwendung interagieren.

Schritte zur Integration der Sicherheit in die Architektur- und Designphasen

1. Führen Sie eine Risikobewertung der vorgeschlagenen Architektur und Bereitstellungsumgebung durch, um festzustellen, ob das Design Risiken birgt.

 2. Bewerten Sie die Sicherheitsauswirkungen und -risiken, wenn die Anwendung mit dem Originalsystem interagiert, sowie die Sicherheitsprobleme des Datenflusses zwischen verschiedenen Komponenten, Schichten oder Systemen.

3. Kommentieren Sie alle spezifischen Gefährdungsprobleme, die während der Implementierungs- oder Bereitstellungsphase behoben werden müssen (d. h. Schwachstellen, die davon abhängen, wie und wo die Anwendung bereitgestellt wird).

4. Berücksichtigen Sie Abhängigkeiten und Schwachstellen, die durch Interaktionen mit Mashups, SOA und Partnerdiensten verursacht werden. Übergeben Sie den endgültigen Entwurf an die Sicherheits- und Prüfabteilung, um Sicherheitstestpläne und Missbrauchsszenarien zu identifizieren.

Seine Vorteile spiegeln sich in fünf Aspekten wider:

1. Der Risikobewertungsanalyseprozess und das wiederverwendbare Risikobewertungsmodell können sorgfältig koordiniert werden.

 2. Die Risiken, die von der Architekturumgebung oder der Bereitstellungsumgebung ausgehen, können frühzeitig erkannt werden.

 3. Wiederverwendbare Missbrauchsfälle können während der Testphase Zeit sparen.

 4. Reduzieren Sie spezifische Designschwachstellen.

5. Bei Bedarf können die architektonischen Einschränkungen, die Risiken mit sich bringen, angepasst oder geändert werden. Wenn die Risiken nicht vollständig beseitigt werden können, können kompensierende Kontrollen auch zur Definition von Risikominderungsstrategien eingesetzt werden.

Codeausführung und -kompilierung

Wenn Entwickler mit dem Schreiben von Code beginnen, müssen sie über einen vollständigen Satz von Risikobewertungsentwürfen und klare Richtlinien für Sicherheitskontrollen verfügen oder diese über einen zugelassenen Sicherheitsdienst nutzen. Automatisierte statische Code-Tools, die in IDEs integriert sind, können Entwicklern beim Schreiben von Code Inspektionen und Anleitungen bieten. Während der Kompilierung können auch automatisierte Tools verwendet werden, um Code auf Verstöße gegen Richtlinienvorlagen zu überprüfen und Einblicke in Sicherheitsprobleme auf Codeebene zu gewähren.

Schritte zur Integration der Sicherheit in die Codeausführungs- und Kompilierungsphasen

1. Installieren Sie ein statisches Quellcode-Inspektionstool, das in die integrierte Entwicklungsumgebung integriert werden kann.

 2. Als Option können Entwickler eigenständige Codierungstools verwenden, um vor der Bereitstellung des Codes automatisierte Codeüberprüfungen durchzuführen.

 3. Das Sicherheits- und Prüfungsteam überprüft Codemodule stichprobenartig, um zu sehen, ob sie den Compliance-Anforderungen entsprechen, und verwendet automatisierte oder manuelle Codeinspektionen, um vor der Kompilierung auf Sicherheitsrisiken zu prüfen.

 4. Führen Sie während des Kompilierungsprozesses einen automatisierten Scan des statischen Codes durch, um Sicherheitsprobleme und Richtlinieneinhaltung zu finden.

 5. Verwenden Sie Tools, um die Codierungsfehler der Entwickler zu verfolgen und erläuterndes Feedback und Gründe für die von ihnen ausgehenden Sicherheitsrisiken bereitzustellen.

 Dies bringt die folgenden Vorteile mit sich:

 1. Saubererer oder weniger fehlerhafter Code kann an Qualitätsprüfer übermittelt werden.

 2. Mit der Zeit können Entwickler ihre sicheren Codierungsfunktionen verbessern.

 3. Wiederverwendbare Strategien können die Genauigkeit der Risikoanalyse verbessern.

 4. Während der Testphase werden weniger Codierungsfehler oder Schwachstellen entdeckt, was zu einem kürzeren Entwicklungszyklus führt.

Qualitätsbewertung/-tests

Spezifische Sicherheitstools zum Testen von Anwendungen reichen von eigenständigen Lösungen und Diensten, die komplette Anwendungen bewerten können, bis hin zu vollständig integrierten Suiten. Diese Suite bietet Tests und Unterstützung für mehrere Phasen, von der Ausbildung bis zur Umsetzung. Integrierte Lösungen können mehrstufige Unterstützung für Unternehmen bieten, die ihre Reife in wiederholbaren Sicherheitszyklen für Webanwendungen unter Beweis gestellt haben. Integrierte Suiten können an mehreren Stellen im Prozess implementiert werden und liefern Metriken und Feedback für eine kontinuierliche Verbesserung.

Welche Schritte sollten also unternommen werden, um Sicherheit zu integrieren und die Sicherheit während der Qualitätsbewertungs- und Testphase zu verbessern?

1. Konzentrieren Sie sich darauf, die wichtigsten Probleme mit bestimmten Ressourcen zu entdecken.

2. Validieren Sie diese Testergebnisse innerhalb einer Anwendungsarchitektur, die vorhandene Korrekturkontrollen (wie Firewalls und IPS) umfasst.

 3. Priorisieren Sie entdeckte Schwachstellen basierend auf Sicherheits- und Geschäftsanforderungen.

 4. Schlagen Sie Reparaturen für Codezeilen oder APIs, Dienste, Bibliotheken usw. vor, von denen sie abhängig sind.

Auch die Vorteile liegen auf der Hand: 1. Anwendungsentwickler können besser miteinander kommunizieren. 2. Die Plausibilität ist geringer. 3. Schnellerer Reparaturzyklus.

Bereitstellung/Inbetriebnahme

Die Sicherheit von Webanwendungen endet nicht mit der Anwendungsbereitstellungsphase. Sobald eine Webanwendung in Produktion ist, sollten zusätzliche Tests und Überwachung implementiert werden, um sicherzustellen, dass Daten und Dienste geschützt sind. Durch die automatisierte Sicherheitsüberwachung tatsächlicher Webanwendungen wird sichergestellt, dass die Anwendung wie erwartet ausgeführt wird und keine Informationen preisgegeben werden, die ein Risiko darstellen könnten. Die Überwachung kann intern erfolgen oder an einen externen Anbieter ausgelagert werden, der Anwendungen rund um die Uhr überwachen kann.

Schritte zur Integration und Verbesserung der Sicherheit während der Bereitstellungs- und Produktionsphase:

1. Überwachen Sie Missbrauch, dessen Zweck darin besteht, sogenannte „nicht ausnutzbare Schwachstellen“ beim Testen zu identifizieren. Es hat wirklich gewonnen. Es darf nach der Produktion nicht mehr verwendet werden.

 2. Überwachen Sie Datenlecks, um alle Orte zu finden, an denen sie falsch verwendet, gesendet oder gespeichert wurden.

 3. Vergleichen Sie die Risikobewertung vor der Bereitstellung mit dem Expositionsumfang nach der Produktion und geben Sie dem Testteam Feedback.

 4. Implementieren Sie Webanwendungs-Firewalls, IPS oder andere Abhilfemaßnahmen, um die Gefährdung zu verringern, bevor Code repariert wird, oder um neue Sicherheitsvorschriften einzuhalten.

Die Vorteile sind wie folgt:

1. Verbessern Sie die Wissensbasis über Exploits, die erfolgreich implementiert werden können, und verbessern Sie dadurch die Scan-Effizienz während statischer und dynamischer Tests.

 2. Anwendungsmissbrauch erkennen und verhindern.

 3. Erzielen Sie eine bessere Integration zwischen dynamischen Tests und Anwendungskontrollen in der Produktion (z. B. Web Application Firewall oder IPS).

 4. Erfüllen Sie die Compliance-Anforderungen, bevor Sie erneut Code schreiben.

 5. Nutzen Sie Feedback-Mechanismen, um eine kontinuierliche Verbesserung zu erreichen.

Zusammenfassung

Die Sicherung von Webanwendungen bedeutet nicht unbedingt eine Verlängerung des Entwicklungszyklus. Mit einer guten Schulung aller Entwickler und einem klaren und wiederholbaren Build-Prozess können Unternehmen Sicherheit und Risiken auf effiziente und kollaborative Weise in den Entwicklungsprozess integrieren.

Um Sicherheit in den Bereitstellungszyklus von Webanwendungen zu integrieren, ist ein kollaborativer Ansatz erforderlich, der Menschen, Prozesse und Technologie integriert. Obwohl Tools und Suiten für die Sicherheit von Webanwendungen dabei helfen können, den Prozess zu verbessern, sind sie kein Allheilmittel. Um den größtmöglichen Nutzen zu erzielen, sollten Sie die Wahl eines Anbieters von Sicherheitstools für Webanwendungen in Betracht ziehen, der den gesamten Entwicklungszyklus versteht und über Tools verfügt, die Sie in mehreren Phasen des Entwicklungsprozesses unterstützen können.


Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie die Sicherheit von Webanwendungen gewährleisten können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn