Kann ich mich gegen SQL Injection schützen, indem Sie einzelne Anführungszeichen und umgebende Benutzereingaben in einfache Anführungszeichen setzen?

Merke ich, dass parametrisierte SQL-Abfragen ist der optimale Weg zur Bereinigung von Benutzereingaben beim erstellen von Abfragen mit Benutzereingaben, aber ich Frage mich, was ist falsch mit der Einnahme von Benutzereingaben und Flucht jeder einzelne Zitate und um die ganze Zeichenfolge in einfache Anführungszeichen. Hier ist der code:

sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'"

Einzelne zitieren, den der Benutzer eingibt, wird ersetzt mit Doppel-single-Angebote, die eliminiert die Fähigkeit der Benutzer, um das Ende der Zeichenfolge, alles sonst könnte es für Sie geben, wie Semikolons, Prozent-Zeichen, etc, all das wird Teil der Zeichenfolge und nicht tatsächlich ausgeführt, die als Teil des Befehls. Wir sind Microsoft SQL Server 2000 verwenden, für die ich glaube, dass die single-quote ist die einzige string-Trennzeichen, und der einzige Weg zu entkommen die Zeichenfolge, Trennzeichen, so gibt es keinen Weg, um auszuführen alles, was der Benutzer eingibt.

Sehe ich keinen Weg, der zum starten einer SQL-injection-Angriff gegen diese, aber ich merke, dass wenn dies so kugelsicher, wie es mir scheint, jemand anderes hätte es schon und es wäre gängige Praxis. Meine Frage ist: was ist falsch an diesem code? Weiß jemand einen Weg, um eine SQL-injection-Angriff in der Vergangenheit dieser Bereinigung Technik? Beispiel Benutzereingaben, die nutzt diese Technik sehr hilfreich wäre.

UPDATE:

Vielen Dank an alle für Ihre Antworten; so ziemlich alle Informationen, die ich stieß bei meiner recherche zeigte sich auf dieser Seite irgendwo, das ist ein Zeichen der Intelligenz und Geschicklichkeit der Menschen, die sich Zeit genommen, Ihre arbeitsreiche Tage, um mir zu helfen mit dieser Frage.

Den Grund habe ich noch nicht angenommen, keine der Antworten ist, dass ich immer noch weiß nicht jeder Weg, um effektiv zu starten Sie einen SQL-injection-Angriff gegen diesen code. Ein paar Leute vorgeschlagen, dass ein backslash würde ausbrechen einfache Anführungszeichen und belassen Sie das andere Ende der Schnur so, dass der rest der Zeichenfolge ausgeführt werden würde als Teil der SQL-Befehl, und ich merke, dass diese Methode funktionieren würde, um zu injizieren SQL in eine mySQL-Datenbank, sondern in der MS SQL 2000 die einzige Möglichkeit (die ich habe finden können) auf der Flucht ein single-quote mit einem weiteren single-Fans aufgepasst; Schrägstriche werden es nicht tun. Und es sei denn, es gibt einen Weg zu stoppen die Flucht der single-quote, keiner der rest von der Benutzereingabe ausgeführt werden, weil es alle als einen zusammenhängenden string.

Ich verstehe, dass es bessere Möglichkeiten gibt zu desinfizieren input, aber ich bin wirklich mehr daran interessiert zu lernen, warum die Methode, die ich oben angegeben nicht funktionieren. Wenn jemand weiß, von irgendeiner spezifischen Weise zum bereitstellen eines SQL-injection-Angriff gegen diese Bereinigung Methode, die ich lieben würde, um es zu sehen.

InformationsquelleAutor der Frage Patrick | 2008-09-26

Schreibe einen Kommentar