ASP.NET MVC – SQL Injection

Es gibt viele Arten von Angriffen, die wir in unseren Anwendungen erhalten können. Eine der häufigsten Arten, die großen Schaden anrichten können, ist die SQL-Injection . Bei diesem Angriff werden Schwachstellen in der Art und Weise aufgedeckt, in der wir mit Abfragen gegen Datenbanken umgehen um Informationen zu extrahieren oder Werte einzufügen, die die Funktionalität beeinträchtigen könnten.

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:

asp_sqlinjection.jpg
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.

Wie schützt man?
Der Weg, uns in diesem Fall zu schützen, führt über zwei grundlegende Schritte: Der erste besteht darin, dass wir Daten nicht direkt laufen lassen können, während wir sie erhalten. Zu diesem Zweck müssen wir vor der Abfrage den Parameter mit einer Methode bereinigen, die nach unzulässigen Zeichen sucht und in Wenn Sie sie finden, senden Sie den Benutzer an eine 404-Seite oder Seite nicht gefunden.

Sehen wir uns im folgenden Code an, wie wir filtern können, was wir erhalten:

See also  Suchen und Anzeigen der öffentlichen Web-IP-Adresse mit Linux-Befehlen

asp_sqlinjection2.jpg

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.

Ausnahmen erfassen
Schließlich, wenn ein unzulässiger Parameter in unsere Anwendung kommt, müssen wir um jeden Preis vermeiden, dass eine Spur des Fehlers vorliegt, da er sensible Daten unserer Installation enthält und gegen uns verwendet werden kann, sodass wir immer darauf achten müssen, diese zu erfassen Ausnahmen und senden Sie eine personalisierte Nachricht, die nicht viele Details, weil diese Details wir in der Entwicklungsumgebung sehen können.

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.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *