Heim > Artikel > Betrieb und Instandhaltung > Was ist der zentrale Abwehrmechanismus von Webanwendungen?
Um böswillige Eingaben zu verhindern, implementiert die Anwendung eine große Anzahl von Sicherheitsmechanismen, und diese Sicherheitsmechanismen sind alle vom Konzept her ähnlich.
Diese Sicherheitsmechanismen bestehen aus folgenden Aspekten:
1. Verarbeitung der Daten und Funktionen der Webanwendung, auf die der Benutzer zugreift (Verhinderung unbefugten Zugriffs)
2. Verarbeitung der vom Benutzer in die Webanwendung eingegebenen Daten Funktionen (Verhinderung unbefugten Zugriffs) Erstellen schädlicher Daten)
3. Auf Angriffe reagieren (unerwartete Fehler behandeln, offensichtliche Angriffe automatisch blockieren, automatisch Warnungen an Administratoren senden, Programmzugriffsprotokolle verwalten)
Prozess Zugriff
Webanwendungen verwalten den Benutzerzugriff über drei miteinander verbundene Sicherheitsmechanismen:
1. Authentifizierung (Authentifizierung)3. Zugriffskontrolle (Zugriffskontrolle)
Diese drei Mechanismen verwalten den Benutzer Zugriff auf Anwendungen, und sie sind auch drei Angriffsflächen; und diese drei sind voneinander abhängig und unverzichtbar, egal wo es ein Problem gibt (Barrel-Prinzip). Authentifizierung
Die Authentifizierung ist der erste Mechanismus zur Handhabung des Benutzerzugriffs. Sofern die Website nicht nur einen Benutzertyp hat, muss die Authentifizierung verwendet werden.
In Anwendungen mit höherer Sicherheit wie Banken werden andere Zertifikate, Zwei-Faktor-Authentifizierung usw. verwendet, um dieses Modell zu stärken. In Anwendungen mit höheren Sicherheitsanforderungen können Client-Zertifikate, Smartcards oder Challenge-Response-Mechanismen erforderlich sein . Andere Authentifizierungsmodelle.
Authentifizierungsmechanismen erfordern häufig eine Reihe weiterer Unterstützungsfunktionen, wie z. B. Registrierung, vergessenes Passwort, Passwortänderung usw.
Es gibt einige häufige Schwachstellen im Authentifizierungsmechanismus, wie z. B. das Durchlaufen von Benutzernamen, schwache Passwörter, logische Fehler zur Vermeidung der Anmeldung, Social-Engineering-Datenbankabfragen usw.
Sitzungsverwaltung
Nach bestandener Überprüfung ist es an der Zeit, die Sitzung des Benutzers zu verwalten. Um die Zugriffskontrolle zu implementieren, muss die Anwendung verschiedene von verschiedenen Benutzern eingereichte Anforderungen identifizieren. Dazu muss die Anwendung eine Sitzung für jeden Benutzer einrichten und ein Token senden, das die Sitzung darstellt, d. h. ein Sitzungstoken Benutzer. Die Sitzung selbst besteht aus einer Reihe von auf dem Server gespeicherten Datenstrukturen, die den Interaktionsstatus zwischen dem Benutzer und der Anwendung verfolgen.
Einige Anwendungen verwenden keine Sitzungstoken, um Sitzungen zu identifizieren, sondern identifizieren Sitzungen stattdessen durch wiederholte Übermittlung von Benutzerzertifikaten (dies ist beim integrierten Authentifizierungsmechanismus von HTTP der Fall, der Sitzungen durch wiederholte Übermittlung von mit base64 verschlüsselten Kontokennwörtern identifiziert). In einigen Fällen werden Sitzungsinformationen nicht auf dem Server, sondern auf dem Client gespeichert. Um zu verhindern, dass Benutzer sie ändern, werden sie im Allgemeinen verschlüsselt.
Die Angriffsfläche des Sitzungsmanagements ist das Sitzungstoken selbst. Indem Sie auf die Generierungsregeln des Sitzungstokens schließen oder die Sitzungstoken anderer Benutzer abfangen, können Sie wie andere auf nicht autorisierte Funktionen und Daten zugreifen.
Zugriffskontrolle
Wenn die vorherige Authentifizierung und Sitzungsverwaltung normal ausgeführt wird, kann die Anwendung die Identität und den Interaktionsstatus jedes Benutzers über das Sitzungstoken in jeder Anfrage bestätigen und dann entscheiden, ob sie der Anfrage des Benutzers zustimmt.
Verarbeitung von Eingaben
Alle Benutzereingaben sind nicht vertrauenswürdig. Die meisten Angriffe auf Webanwendungen beziehen sich auf Eingaben, die speziell von Angreifern erstellt wurden. Daher ist die sichere Verarbeitung von Benutzereingaben der Schlüssel zur Gewährleistung der Anwendungssicherheit.
Webanwendungen führen möglicherweise sehr strenge Prüfungen für einige spezielle Eingaben durch, z. B. Längenbeschränkungen, Zeichenbeschränkungen usw.; manchmal müssen sie alle vom Benutzer übermittelten Eingaben akzeptieren und ausblenden. usw. Sie werden auf dem Server generiert und an den Client zurückgesendet und dann auf Anfrage des Benutzers an den Server zurückgesendet. Während dieses Vorgangs kann der Angreifer sie anzeigen und ändern.
Verwenden Sie unterschiedliche Verarbeitungsmethoden in verschiedenen Situationen oder verwenden Sie sie in Kombination.
Die Blacklist enthält eine Reihe von Zeichenfolgen oder Mustern, die bei Angriffen verwendet werden. Alle mit der Blacklist übereinstimmenden Daten werden blockiert.
Blacklist ist die am wenigsten effektive Methode zur Eingabebestätigung. Dafür gibt es zwei Gründe:
1) Benutzereingaben können durch verschiedene Kodierungen oder andere Ausdrucksformen umgangen werden, beispielsweise durch das Fehlen einiger Zeichen, die den gleichen Effekt haben. Wenn beispielsweise Alert('xss') blockiert ist, können Sie auch prompt('xss') verwenden. Webanwendungs-Firewalls sind beispielsweise häufig anfällig für Null-Byte-Angriffe (Null-Angriffe). Dies liegt daran, dass Zeichenfolgen in verwalteten Systemen unterschiedlich verarbeitet werden und unkontrollierte Situationen.2) Die rasante Entwicklung der Technologie hat zu einigen neuen Methoden zur Ausnutzung von Schwachstellen geführt.
2. Whitelist
Eine Whitelist enthält eine Reihe harmloser Zeichenfolgen, Muster oder eine Reihe von Standards. Alle Daten, die nicht mit der Whitelist übereinstimmen, werden blockiert.
Whitelist ist die effektivste Methode zur Eingabebestätigung, da bei der Angabe der Whitelist nur sichere Zeichenfolgen übrig bleiben und Angreifer die Eingabe nicht konstruieren können.
Aber die Whitelist hat Einschränkungen. In vielen Fällen müssen Webanwendungen einige Zeichen akzeptieren, die nicht den Sicherheitsstandards entsprechen. Beispielsweise erfordert die Anwendung, dass Benutzer sich mit ihrem echten Namen registrieren, aber die Namen enthalten einige Bindestriche, Apostrophe und andere Zeichen, die Angriffe auf die Datenbank verursachen können . Daher unterliegt das Whitelisting Einschränkungen und ist keine universelle Lösung für unsichere Eingaben.
3. Bereinigung
Diese Methode löst das Problem, das die Whitelist nicht bewältigen kann. Sie akzeptiert einige Dateneingaben, die die Sicherheit nicht garantieren können, aber sie werden bereinigt, wie z. B. Löschen, Escapen, Kodieren usw.
Bereinigung kann verwendet werden a Dies ist eine allgemeine Methode. Es sollte jedoch beachtet werden, dass eine Eingabe effektiv weiterentwickelt werden kann, wenn mehrere mögliche schädliche Daten berücksichtigt werden müssen. In diesem Fall ist eine Grenzbestätigung erforderlich.
4. Sichere Datenverarbeitung
Die unsichere Verarbeitung von vom Benutzer übermittelten Daten ist die Hauptursache für viele Schwachstellen in Webanwendungen.
Eine sichere Datenverarbeitungsmethode muss sich nicht um die Bestätigung von Benutzereingabedaten kümmern, sondern gewährleistet die absolute Sicherheit des Verarbeitungsprozesses. Zum Beispiel parametrisierte Abfragen, um SQL-Injection zu verhindern.
Aber diese Methode gilt nicht für jede Aufgabe, die eine Webanwendung ausführen muss. Falls zutreffend, handelt es sich um eine allgemeine Methode zum Umgang mit böswilligen Eingaben.
5. Logikprüfung
Bei einigen Schwachstellen ist die Eingabe des Angreifers genau die gleiche wie die eines normalen Benutzers, aber die Motivation ist eine andere. In diesem Fall ist der oben genannte Mechanismus fast völlig wirkungslos. Beispielsweise kann ein Angriff auf ein übermitteltes Konto durch Ändern eines ausgeblendeten Formularfelds erfolgen, um auf andere Benutzerkonten zuzugreifen. Zu diesem Zeitpunkt kann noch keine Eingabebestätigung die Daten des Angreifers von denen normaler Benutzer unterscheiden. Um unbefugten Zugriff zu verhindern, muss der Antrag bestätigen, dass das übermittelte Konto dem Benutzer gehört, der das Konto zuvor übermittelt hat.
Angesichts der Art des Kernsicherheitsproblems (alle Benutzereingaben sind nicht vertrauenswürdig) ist es möglich, eine Grenze zwischen dem Internet (nicht vertrauenswürdig) und der Serveranwendung (vertrauenswürdig) festzulegen und dann alle Eingaben von zu bereinigen Internet an der Grenze, Übergabe der gereinigten Daten an die Serveranwendung. Das Obige ist eine einfache Grenzbestätigung. Bei der Analyse tatsächlicher Schwachstellen wurde festgestellt, dass die Durchführung dieser einfachen Eingabebestätigung nicht ausreicht.
Aufgrund der Bandbreite der von der Anwendung ausgeführten Funktionen und der Vielfalt der verwendeten Technologien muss eine typische Anwendung gegen eine große Anzahl verschiedener Eingabeangriffe abwehren, von denen jeder eine völlig unterschiedliche Art speziell entwickelter Daten verwenden kann. Es ist schwierig, an der Außengrenze einen einfachen Mechanismus zur Abwehr aller Angriffe zu etablieren.
Viele Anwendungsfunktionen sind darauf ausgelegt, eine Reihe verschiedener Prozesse zu kombinieren. Eine Eingabe des Benutzers kann viele Vorgänge in vielen Komponenten ausführen, wobei die Ausgabe des vorherigen Vorgangs im nachfolgenden Vorgang verwendet wird. Die Daten werden transformiert und unterscheiden sich völlig von der ursprünglichen Eingabe. Erfahrene Angreifer können diesen Unterschied jedoch ausnutzen, um an kritischen Stellen schädliche Daten zu generieren und die Komponenten anzugreifen, die die Daten empfangen. Daher ist es schwierig, an der Außengrenze einen einfachen Mechanismus zur Abwehr aller Angriffe zu etablieren.
Grenzbestätigung ist ein effizienteres Modell. Die Grenze beschränkt sich hier nicht mehr auf die Grenze zwischen dem Internet und der Webanwendung. Jede Komponente oder Funktionseinheit der Webanwendung hat Grenzen. Auf diese Weise kann sich jede Komponente gegen die jeweilige Art speziell konzipierter Eingaben wehren, die sie empfängt. Wenn die Daten unterschiedliche Komponenten durchlaufen, können Validierungsprüfungen für die zuvor generierten Daten durchgeführt werden. Da unterschiedliche Validierungsprüfungen in unterschiedlichen Verarbeitungsstadien durchgeführt werden, besteht keine Möglichkeit von Konflikten zwischen ihnen.
Zum Beispiel das Bild unten:
Während des Bestätigungsprüfungsprozesses, wenn die Eingabe des Benutzers in mehreren Schritten verarbeitet werden muss, tritt häufig ein Problem beim Eingabemechanismus auf . Dieses Problem tritt auf, wenn eine Anwendung versucht, Benutzereingaben durch Entfernen oder Codieren bestimmter Zeichen zu bereinigen. Wenn dieses Problem nicht sorgfältig angegangen wird, kann ein Angreifer spezielle Eingaben erstellen, sodass schädliche Daten den Bestätigungsmechanismus erfolgreich umgehen können. Zum Beispiel die Umgehung doppelter Schreibvorgänge und die Umgehung der Schrittausführungsreihenfolge.
Die Datennormalisierung schafft ein weiteres Problem. Um einige ungewöhnliche Zeichen und Binärdaten über http zu übertragen, werden sie normalerweise durch Kodierung normalisiert. Wenn die Dekodierung jedoch nach der Implementierung der Filterung durchgeführt wird, kann der Angreifer den Bestätigungsmechanismus durch Kodierung umgehen.
Zusätzlich zu den standardmäßigen Codierungsschemata, die von Webanwendungen verwendet werden, kann es auch in anderen Fällen zu Normalisierungsproblemen kommen, wenn Komponenten der Anwendung Daten von einem Zeichensatz in einen anderen konvertieren. Beispielsweise werden Ÿ und  in Y und A umgewandelt. Angreifer nutzen diese Methode häufig, um blockierte Zeichen und Schlüsselwörter zu übertragen.
Manchmal ist es schwierig, Probleme zu vermeiden, die durch mehrstufige Bestätigung und Standardisierung verursacht werden, und es gibt keine einheitliche Lösung für solche Probleme. Wie kann es generell vermieden werden, fehlerhafte Eingaben zu bereinigen und diese stattdessen ganz abzulehnen?
Wir haben unser Bestes getan, um das Eindringen von Angreifern zu verhindern, aber es gibt kein absolut sicheres System. Wie sollte die Webanwendung im Allgemeinen auf den Angriff reagieren? :
1. Unerwartete Fehler umgehen
2. Offensichtliche Angriffe automatisch blockieren
4. Programmzugriffsprotokolle verwalten
Ein Schlüssel zur Anwendung ist der Umgang mit unerwarteten Fehlern. Im Allgemeinen sollten Anwendungen in einer Produktionsumgebung keine vom System generierten Informationen oder andere Debugging-Informationen an den Benutzer zurückgeben. Diese Informationen bieten Angreifern gute Referenzinformationen für den nächsten Angriff. Und unerwartete Fehler deuten oft auf einen Fehler in den Abwehrmechanismen des Programms hin. Fehlerbehandlungsmechanismen sind häufig in Protokollierungsmechanismen integriert.
Umgang mit Angriffen
Viele Angriffe senden eine große Anzahl häufiger bösartiger Zeichen. In solchen Fällen sollten Anwendungen automatische Reaktionsmaßnahmen ergreifen, um zu verhindern, dass Angreifer sie erkennen. Beenden Sie beispielsweise die Sitzung, fordern Sie eine erneute Anmeldung, sperren Sie IP usw.
Protokolle verwalten
Die Protokolle zeichnen den Einbruch auf und der Einbruchsprozess kann nach dem Einbruch immer noch wiederhergestellt werden.
Wichtige Anwendungsprotokolle sollten alle Anfragen protokollieren. Im Allgemeinen sollte es mindestens die folgenden Elemente enthalten:
1 Alle authentifizierungsbezogenen Ereignisse, wie z. B. erfolgreiche oder fehlgeschlagene Anmeldungen, Passwortänderungen, 3 Zugriffskontrollanfragen 4. Enthält bekannte AngriffszeichenfolgenDas Protokoll zeichnet die Zeit, die IP und das Benutzerkonto jedes Ereignisses auf. Protokolle müssen streng vor unbefugtem Lesen geschützt werden. Schreiben, Ändern usw. Protokolle können auch zu einer Angriffsfläche werden. Protokolle, auf die ohne Autorisierung zugegriffen werden kann, liefern Angreifern beispielsweise vertrauliche Informationen wie Sitzungstoken und Anforderungsparameter.Alarm für Administratoren
Das Kernproblem sind falsch positive und falsch negative Ergebnisse, die durch die Kombination des Alarmmechanismus mit einem Bestätigungsmechanismus und anderen Kontrollmethoden verbessert werden können.
Zu den überwachten anormalen Ereignissen gehören im Allgemeinen die folgenden:
1. Anwendungsanomalie, z. B. der Empfang einer großen Anzahl von Anfragen von einem IP
2. Transaktionsanomalie, z. B. Geldüberweisungen auf und von einem Bankkonto Die Zahl ist abnormal Überwachungs- und Prüffunktionen, führen Diagnoseaufgaben durch und konfigurieren verschiedene Funktionen der Anwendung. Verwaltungsmechanismen sind eine der Hauptangriffsflächen von Anwendungen, und Verwaltungsmechanismen verfügen oft über sehr hohe Berechtigungen. Die Kontrolle über den Verwaltungsmechanismus zu erlangen bedeutet, die Kontrolle über die Anwendung zu erlangen. Darüber hinaus gibt es häufig einige offensichtliche Lücken und sensible Funktionen im Verwaltungsmechanismus. Sicherheitslücken, durch die Administratorrechte erlangt werden, treten im Allgemeinen im Benutzerzugriffsmechanismus auf, z. B. unbefugter Zugriff, schwache Kennwörter usw. Wenn der Verwaltungshintergrund von normalen Benutzern gesendete Anforderungen verarbeiten kann, können Sie versuchen, die XSS-Sicherheitslücke blind im Hintergrund einzugeben.Das obige ist der detaillierte Inhalt vonWas ist der zentrale Abwehrmechanismus von Webanwendungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!