Ich unterrichte IT-Sicherheit an Fachhochschulen. Oft haben Schüler Verwirrung über die Begriffe, die für die SQL-Injection verwendet werden. Lassen Sie mich daher versuchen, dies zu klären.
Im Kontext einer Webanwendung wie Facebook ist
SQL-Injection der Zeitpunkt, an dem die Ein normaler Webbenutzer gibt SQL-Code in Datenfelder ein, z. B.
'OR' 1 '=' 1 in die Textfelder eines Anmeldeformulars.
Die beste Person Um die SQL-Injektion zu verhindern, ist der Webentwickler, auch bekannt als die Person, die für das Schreiben von Code für die Webanwendung zum Lesen / Schreiben von Daten in die Datenbank verantwortlich ist.
Die einfachste Möglichkeit, die SQL-Injektion durch den Webentwickler zu verhindern, ist die Verwendung parametrisierte Abfragen.
Vorbereitete Anweisungen und parametrisierte Abfragen bedeuten dasselbe.
Ich werde ab diesem Punkt parametrisierte Abfragen verwenden.
Parametrisierte Abfragen beziehen sich auf die Art und Weise, wie SQL-Code zuerst definiert und dann die Daten in die entsprechenden Parameter eingefügt werden.
ZB in .Net
Aktualisieren Sie "Benutzer" name` = @name wobei ʻid` = @id
die Parameter @name und @id sind die Daten. Der Rest ist der SQL-Code.
Beachten Sie, dass die parametrisierten Abfragen normalerweise , aber nicht immer im Webanwendungscode ausgeführt werden.
Es gibt zwei häufig verwendete Abfragen Möglichkeiten zum Schreiben parametrisierter Abfragen.
- Im Webanwendungscode abhängig von der verwendeten Sprache
- In der Datenbank mit gespeicherten Prozeduren
ol> Also in gewissem Sinne ja Gespeicherte Prozeduren sind eine Form parametrisierter Abfragen.
Es gibt andere Möglichkeiten, die SQL-Injection zu verhindern, indem Sonderzeichen wie einfache Anführungszeichen maskiert werden. In PHP können Sie beispielsweise mysql_real_escape_string verwenden, bei dem im Grunde nur Schrägstriche vor den einfachen Anführungszeichen stehen.
Dies ist nicht ideal, da in bestimmten Datenbanken wie MySQL Probleme mit% und dem Unterstrich für den LIKE-Operator auftreten. Weitere Informationen finden Sie in diesem PDF.
Kurz gesagt, alle vorgeschlagenen Optionen haben mit der Bereinigung (Bereinigung) von Benutzereingaben zu tun, um den SQL-Code zu bereinigen.
Am besten verwenden Sie parametrisierte Abfragen in Abhängigkeit von der verwendeten Programmiersprache.
Ende der Geschichte.