Injection

Was ist Injection?

Injection ist ein häufiges Sicherheitsproblem in Webanwendungen. Es wird regelmäßig in der OWASP Top 10 genannt, eine anerkannte Liste typischer Sicherheitsschwachstellen in Webanwendungen, die von der Organisation OWASP (Open Web Application Security Project) herausgegeben wird, eine Nonprofit-Organisation mit dem Ziel, die Sicherheit von Software und des Internets zu verbessern.

Beschreibung

Injection umfasst alle Arten von Schwachstellen, bei denen eine Anwendung nicht vertrauenswürdige Anfragen und Daten ungefiltert an einen Interpreter sendet. Die Injection-Schwachstelle findet sich häufig bei Datenbankanfragen sowie bei Betriebssystembefehlen, XML-Parsern und wenn Benutzereingaben als Programmargumente gesendet werden. Die SQL-Injektion ist die bekannteste Art der Injection. Bei unzureichender Eingabevalidierung in einem SQL-Befehlsaufruf können unerlaubte Parameter an die Datenbank gesendet werden. Injection ist bei Anwendungen, die in PHP oder ASP geschrieben sind, häufig, da diese tendenziell ältere funktionale Schnittstellen aufweisen. Viel seltener kommt es bei J2EE– und ASP.NET-Anwendungen vor, die normalerweise keine SQL-Injektionen zulassen.

Auswirkungen

Die häufigsten Fälle sind Datendiebstahl durch unautorisierte Zugriffe auf Datenbanken. Dies können Benutzernamen, Passwörter und andere vertraulichen Informationen sein. Im kritischsten Fall ist eine vollständige Übernahme eines Systems möglich. Da diese Art von Angriff automatisiert werden kann, zufällige Websites anzugreifen, erhöht sich das Risiko, solchen Angriffen ausgesetzt zu sein.

Vermeidung

Es ist sicherzustellen, dass der verwendete Interpreter eine erlaubte Anfrage von einer unerlaubten unterscheiden kann. Alle Benutzereingaben sollten dazu als Variablen erfasst und validiert werden, statt als direkte Befehle den Interpreter zu erreichen. Am besten ist es, auf direkten Nutzerzugriff auf einen SQL-Interpreter zu verzichten. Stattdessen kann eine API erstellt werden, die nur vordefinierte parametrisierte Befehle und nicht beliebige SQL-Anfragen zulässt und an den Interpreter weiterreicht.

Es sollten dem Benutzer ferner keine internen Fehlermeldungen angezeigt werden. Ein nicht abgefangener SQL-Fehler kann Informationen wie Prozedurnamen oder Tabellennamen enthalten und in den Händen eines sachkundigen Angreifers zum Zugriff auf Daten verwendet werden.


Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte