Frage

Ich schreibe eine C -Anwendung, die einige Benutzereingaben annimmt und einige Datenbankabfragen durchführt. Ich bin mir der Risiken der SQL -Injektion sehr bewusst und möchte dies verhindern.

Idealerweise würde ich parametrisierte Abfragen verwenden, aber ich konnte mit dieser Funktionalität in C bisher nichts finden. Ich baue gerade meine Abfragen als solche auf:

char *query;
asprintf(&query, "UPDATE SomeTable SET SomeField='%s';", userInput);

Wenn ich dies nicht tun kann, muss ich die Benutzereingabe filtern. Wie soll diese Filterung durchgeführt werden? Ist es ausreichend, nur alle 's und "s? (Gültige Eingänge können sie nicht enthalten). Wenn ja, was ist der einfachste Weg, dies in C zu tun?

War es hilfreich?

Lösung

Ich glaube, dass Sie vorbereitete Aussagen und Parameterbindung verwenden möchten. Interpolieren Sie Benutzerdaten nicht direkt in Ihre Abfragen. Siehe das Mysql Handbuch Für Informationen dazu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top