Um uns vor solchen Angriffen zu schützen, müssen wir zunächst wissen, woraus sie bestehen. Auf diese Weise können wir lernen, welche Vorsichtsmaßnahmen wir treffen sollten.
SQL Injection
Wie bereits erwähnt, funktioniert unsere Datenbank bei diesem Angriff nicht ordnungsgemäß, da der Angreifer Daten eingibt, die dazu führen, dass unsere Abfragen aufgrund bestimmter Sicherheitslücken fehlschlagen. Auf diese Weise kann der Angreifer versuchen , die Schemata unserer Tabellen abzurufen oder Daten einzugeben, die nicht korrekt sind kann den Vorgang beeinträchtigen, z. B. indem Sie einen Benutzer eingeben, um auf den administrativen Bereich unserer Anwendung zuzugreifen .
Eine der gebräuchlichsten Methoden besteht darin, Parameter direkt einzugeben, wenn sie von den Controllern empfangen werden. Beispielsweise wird nach Kategorien gesucht, und vom Controller wird die Kennung einer Kategorie empfangen, nach der gesucht werden soll. Wenn dies direkt ohne Bereinigung geschieht, kann dies einen Angriff auslösen Zeige dem Angreifer alle vorhandenen Kategorien.
Sehen wir uns den folgenden unsicheren Code an:
Wir können sehen, wie wir in Zeile 6 die Bedingung der Suche erstellen und sie dann in Zeile 10 direkt an die Methode übergeben, die die Abfrage scharfschaltet. Ein Auge mit wenig Erfahrung sieht möglicherweise kein Problem, aber wenn ein Angreifer den folgenden Parameter eingibt: 1 oder 1 = 1 ” könnte die Liste unserer gesamten Tabelle erhalten.
Sehen wir uns im folgenden Code an, wie wir filtern können, was wir erhalten:
Hier überprüfen wir mit einem regulären Ausdruck, dass nur Zahlen das sind, was unser Controller empfängt. Andernfalls senden wir eine Nachricht. Jeder kann seine Version erstellen. Wichtig ist jedoch, zu steuern, was unsere Anwendung empfängt.
Der zweite Schritt, um Angriffe zu vermeiden, besteht darin, nicht mit dem Platzhalter “*” zu arbeiten und die Abfragen immer zu begrenzen, wenn wir auf einen Datensatz warten. Auf diese Weise vermeiden wir, dass alle Daten offengelegt werden, falls es jemandem gelingt, unsere Prognosen zu übertreffen.
Wie wir sehen konnten, gibt uns die Kenntnis der Angriffe eine andere Perspektive, wie wir unsere Anwendung schützen und für unsere Benutzer sicherer machen können.