In Entwicklung und Sicherheit Zuletzt aktualisiert am:
Teilen:
Cloudways bietet verwaltetes Cloud-Hosting für Unternehmen jeder Größe zum Hosten einer Website oder komplexer Webanwendungen.

Ergreifen Sie Maßnahmen in der Entwicklung, um Ihr Web-Backend zu schützen.

Kleine Unternehmen, Banken und viele Branchen sind auf Webanwendungen angewiesen. Ab dem Zeitpunkt der Erstellung einer Webanwendung ist es wichtig, über Protokolle zu verfügen, mit denen Schwachstellen während der Entwicklung überprüft werden können, um Sicherheitsverletzungen, Datenlecks und finanzielle Probleme zu vermeiden.

Die gefährlichsten Webangriffe sind solche auf der Serverseite, auf der Daten gespeichert und analysiert werden.

Was ist Backend?

Eine Webanwendung besteht aus zwei Teilen - Frontend und Backend.

  • Das Frontend ist clientseitig, es ist der Teil, mit dem der Benutzer interagiert. In der Regel wird es mit HTML, CSS und Javascript erstellt.
  • Das Backend ist serverseitig. Grundsätzlich funktioniert die Anwendung, wendet die Geschäftslogik an, ändert und aktualisiert. Einige der gängigen serverseitigen Tech-Stacks umfassen PHP, NodeJS, Java, Ruby, C, Python, Datenbank, Sicherheit (Authentifizierung, Zugriffskontrolle usw.), Struktur und Inhaltsverwaltung.

Eine kleine Erinnerung, bevor wir beginnen - Authentifizierung, Zugriffskontrolle und Sitzungsverwaltung

Es ist üblich, dass wir die Begriffe verwechseln. Lassen Sie es uns also schnell klären:

  • Die Authentifizierung betrifft den Nachweis der Benutzeridentität (z. B. Passwort, Benutzername, Sicherheitsfragen, Fingerabdrücke).
  • Die Zugriffssteuerung betrifft, auf was der Benutzer auf die Anwendung zugreifen kann. Es erzwingt die Richtlinie, dass Benutzer nicht außerhalb ihrer beabsichtigten Berechtigungen handeln können.
  • Die Sitzungsverwaltung betrifft Antworten und Anforderungstransaktionen, die demselben Benutzer zugeordnet sind. Es ist ein Austauschmechanismus, der zwischen dem Benutzer und der Anwendung verwendet wird, nachdem er sich erfolgreich authentifiziert hat.

Lassen Sie uns Folgendes für eine bessere Back-End-Websicherheit untersuchen.

Einspritzfehler

Seit 2010 hat OSWAP die Injektion als das gefährlichste Risiko für Webanwendungen eingestuft.

Mit Injection-Fehlern kann ein Benutzer Daten bereitstellen, die Schlüsselwörter enthalten, die das Verhalten von Abfragen ändern, die auf der Datenbank basieren. Angenommen, wir haben ein SQL-Skript, das prüft, ob ein übereinstimmender Eintrag in der Datenbank vorhanden ist.

uname = request.POST['username']
passwd = request.POST['password']
sql = "SELECT id FROM users WHERE username='" + uname + "' AND password='" + passwd + "'" 
database.execute(sql)

Ein Angreifer kann jetzt das Kennwortfeld mit bearbeiten SQL-InjectionB. durch Eingabe des Passworts 'OR 1 =' 1, was zu folgender SQL-Abfrage führt:

sql = "SELECT id FROM users WHERE username='' AND password='password' OR 1='1'

Auf diese Weise kann der Angreifer auf alle Benutzertabellen der Datenbank zugreifen, wobei das Kennwort immer gültig ist (1 = '1'). Wenn sie sich als Administrator anmelden, können sie beliebige Änderungen vornehmen.

Wie kann man das verhindern?

Es ist sehr EASY um Injektionsfehler zu vermeiden.

Der beste und einfachste Weg, um zu überprüfen, ob keine Injektionsfehler vorliegen, ist eine gründliche manuelle Überprüfung des Quellcodes, um zu überprüfen, ob Abfragen in der Datenbank über vorbereitete Anweisungen erfolgen. Sie können auch Tools verwenden, um nach zu suchen Schwachstellen.

Und Sie sollten auch Folgendes tun.

  • Verwenden Sie ORMs (Object Relational Mapping Tools).
  • Escape alle Eingaben. In einem Datumsfeld sollte niemals etwas anderes als Datumsangaben gespeichert sein.
  • Isolieren Sie Ihre Daten so, dass nur die Dinge gespeichert werden, auf die von einem bestimmten Standort aus zugegriffen werden soll.
  • Schreiben Sie Fehlercodes für die gute Handhabung. Machen Sie Ihre Datenbank oder Ihr Backend nicht zu ausführlich.

Troy Hunt habe einen brillanten Kurs über SQL-Injection. Wenn Sie interessiert sind, können Sie das erkunden.

Unterbrochene Authentifizierung

Wie bereits erwähnt, befasst sich die Authentifizierung mit den bereitgestellten Anmeldeinformationen. Es ist die Frontlinie der Verteidigung gegen uneingeschränkten Zugang. Eine schlechte Implementierung und Nichtbeachtung der Sicherheitsrichtlinien kann jedoch zu einer fehlerhaften Authentifizierung führen.

Die fehlerhafte Authentifizierung erfolgt hauptsächlich nach drei Mustern:

  • Anmeldeinformationen Füllungen: Dabei verfügt der Angreifer über eine Liste gültiger Benutzernamen und Kennwörter und kann den Angriff automatisieren, um festzustellen, ob die Anmeldeinformationen gültig sind.
  • Bruteforce-Angriff: Wenn die Anwendung schwache Kennwörter für Benutzer oder Administratoren zulässt.
  • Sitzungsentführung: Dabei legt die Anwendung die Sitzungs-ID und die URL offen oder dreht sich nach der Anmeldung nicht.

In allen Fällen kann der Angreifer Zugriff auf ein wichtiges Konto erhalten und sich auf das Unternehmen verlassen, das Geldwäsche, Identitätsdiebstahl oder die Offenlegung gesetzlich geschützter, hochsensibler Informationen verursachen kann.

Wie kann man das verhindern?

Fragen Sie sich vor der Implementierung des Authentifizierungssystems: Was kann ein Angreifer erreichen, wenn das Authentifizierungssystem gefährdet ist?

Und entsprechend der Antwort können Sie Folgendes tun.

  • Implementieren Sie eine Multi-Faktor-Authentifizierung, um automatisierte Angriffe zu verhindern.
  • Ermutigen (oder zwingen) Sie den Benutzer, eine gute Kennwortrichtlinie zu übernehmen.
  • Begrenzen Sie fehlgeschlagene Anmeldungen.
  • Verwenden Sie einen effizienten Algorithmus-Hash. Berücksichtigen Sie bei der Auswahl eines Algorithmus die maximale Kennwortlänge.
  • Testen Sie das Sitzungszeitlimit-System und stellen Sie sicher, dass das Sitzungstoken nach dem Abmelden ungültig ist.

Unterbrochene Zugangskontrolle

Es gibt eine Zugriffskontrolle, um sicherzustellen, was der authentifizierte Benutzer tun darf. Authentifizierung und Sitzungsverwaltung sind die Grund- oder Zugriffssteuerungsregeln. Wenn diese Regeln jedoch nicht genau festgelegt sind, kann dies zu erheblichen Problemen führen.

Häufige Fehler bei der Zugangskontrolle sind:

  • CORS-Fehlkonfiguration, die nicht autorisierten API-Zugriff ermöglicht.
  • Metadatenmanipulation zum direkten Zugriff auf Methoden.
  • Erzwungenes Surfen: Der Angreifer versucht eine URL, ändert Pfade (z. B. http: //website.domain/user/ zu http: //website.domain/admin) und kann sogar wichtige Dateien erkennen.

Wie kann man das verhindern?

In den meisten Fällen treten fehlerhafte Zugriffsfehler auf, wenn Sie die grundlegenden Anforderungen eines effektiven Zugriffsmanagements nicht kennen.

  • Standardmäßig ablehnen, außer öffentliche Ressourcen.
  • Deaktivieren Sie die Serververzeichnisliste und stellen Sie sicher, dass keine Sicherungsdateien vorhanden sind.
  • API-Zugriff mit Ratenbegrenzung, um die Auswirkungen automatisierter Angriffe zu verringern.
  • JWT-Token nach dem Abmelden auf der Backend-Seite ungültig machen.

Datenfreigabe

Die Datenexposition wird auch als Datenverletzung bezeichnet und ist eine Cyber-Bedrohung, die Unternehmen und ihre Kunden bedroht.

Dies tritt auf, wenn die Anwendung Informationen wie Anmeldeinformationen oder vertrauliche Daten wie Kreditkarten oder Gesundheitsakten nicht angemessen schützt. Mehr als 4000 Datensätze sind jede Minute verletzt.

Die finanziellen Auswirkungen auf das Geschäft sind groß: Ein durchschnittlicher Verstoß kann laut USD 3.92 Millionen kosten IBM.

Wie kann man das verhindern?

Als Backend-Entwickler sollten Sie sich fragen, welche Informationen geschützt werden müssen.

Und dann, um solche Mängel zu vermeiden:

  • Vertrauliche Daten verschlüsseln: Für Daten bei REST verschlüsseln Sie alles. Verwenden Sie für übertragene Daten unbedingt sichere Gateways ( SSL )
  • Identifizieren Sie die Daten, die zusätzlichen Schutz erfordern, und beschränken Sie den Zugriff nur auf eine Reihe legitimer Benutzer, indem Sie die schlüsselbasierte Verschlüsselung erzwingen.
  • Vermeiden Sie schwache Verschlüsselungsalgorithmen: Verwenden Sie aktuelle und starke Algorithmen.
  • Haben Sie einen sicheren Backup-Plan.

Unsichere Deserialisierung

Serialisierung und Deserialisierung sind Konzepte, die verwendet werden, wenn Daten in ein Objektformat konvertiert werden, um sie zu speichern oder an eine andere Anwendung zu senden. Die Serialisierung besteht darin, Daten in ein Objektformat wie XML oder JSON zu konvertieren, um sie verwendbar zu machen. Deserialisierung ist genau der umgekehrte Prozess.

Angriffe gegen Deserialisierer können zu Denial-of-Service-, Zugriffssteuerungs- und RCE-Angriffen (Remote Code Execution) führen, wenn Klassen vorhanden sind, die geändert werden können, um das Verhalten zu ändern.

Das zweite Beispiel des OWASP-Top-10-Dokuments bietet eine gute Illustration des PHP-Objektserialisierers:

a:4:{i:0;i:132;i:1;s:7:"Mallory";i:2;s:4:"user";
i:3;s:32:"b6a8b3bea87fe0e05022f8f3c88bc960";}

Dies ist ein Supercookie, der Informationen wie die Benutzer-ID, die Ebene des Benutzers und das Hash-Passwort enthält.

Ein Angreifer kann das serialisierte Objekt ändern, um Zugriff auf Administratorrechte zu erhalten:

a:4:{i:0;i:1;i:1;s:5:"Alice";i:2;s:5:"admin";
i:3;s:32:"b6a8b3bea87fe0e05022f8f3c88bc960";}

Wie kann man das verhindern?

Es ist wichtig, keine serialisierten Objekte aus nicht vertrauenswürdigen Quellen zu akzeptieren.

Du solltest auch:

  • Vertraue niemals Benutzereingaben.
  • Daten validieren: Wenn Ihre Anwendung eine Zeichenfolge enthält, stellen Sie sicher, dass es sich um eine Zeichenfolge handelt, bevor Sie sie verwenden
  • Verwenden Sie eine Überprüfung, um sicherzustellen, dass die Daten nicht geändert wurden. Es ist nützlich, dass Sie Daten zwischen zwei vertrauenswürdigen Quellen senden (z. B. Daten clientseitig speichern).

Server-XSS

Server-XSS (Cross-Site Scripting) ist eine Art der Injektion, wenn ein Angreifer eine Webanwendung verwendet, um bösartigen Code an verschiedene Benutzer zu senden. Es tritt auf, wenn der Angreifer einige gestaltete Daten veröffentlicht, die bösartigen Code enthalten, den die Anwendung speichert. Diese Sicherheitsanfälligkeit ist serverseitig. Der Browser rendert einfach die Antwort.

In einem Forum werden beispielsweise Benutzerbeiträge in einer Datenbank gespeichert, häufig ohne Überprüfung. Angreifer nutzen diese Gelegenheit, um Beiträge mit schädlichen Skripten hinzuzufügen. Anschließend erhalten andere Benutzer diesen Link per E-Mail oder sehen den betreffenden Beitrag und klicken darauf.

Wie kann man das verhindern?

Nach der primären Identifizierung aller Vorgänge, bei denen möglicherweise ein XSS-Risiko besteht und die geschützt werden müssen, sollten Sie Folgendes berücksichtigen.

  • Eingabe validieren: Überprüfen Sie die Eingabelänge, verwenden Sie die Regex-Übereinstimmung und lassen Sie nur einen bestimmten Zeichensatz zu.
  • Ausgabe validieren: Wenn die Anwendung in ihre Antworten auf Daten kopiert, die von einem Benutzer oder einem Dritten stammen, sollten diese Daten HTML-codiert sein, um potenziell schädliche Zeichen zu bereinigen.
  • Limit-HTML zulassen: Wenn Sie beispielsweise ein Kommentar-Blog-System haben, erlauben Sie nur die Verwendung bestimmter Tags. Wenn Sie können, verwenden Sie ein geeignetes Framework für vom Benutzer bereitgestelltes HTML-Markup, um sicherzustellen, dass es keine Mittel zum Ausführen von JavaScript enthält.

Fazit

Die Entwicklungsphase ist entscheidend für die Sicherheit von Webanwendungen. Und Sie sollten in Betracht ziehen, a Scanner für Sicherheitslücken Im Entwicklungslebenszyklus werden die identifizierten Probleme also vor der Produktion behoben.

Teilen:
  • Redaktion
    Autor
    Ein Expertenteam bei Geekflare widmet sich mit Leidenschaft dem Austausch umsetzbarer Inhalte, der Bereitstellung von Erkenntnissen und der Bereitstellung maßgeschneiderter Ratschläge, um Einzelpersonen und Unternehmen dabei zu helfen, in einer digitalen Welt erfolgreich zu sein.

Danke an unsere Sponsoren

Weitere großartige Lektüre zum Thema Entwicklung

Treiben Sie Ihr Geschäft an

Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.