Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verhindern der SQL-Injection in dynamischem SQL

Ahahah, das ist einfach fantastisch!
Endlich habe ich verstanden, was meint dieser Kerl unter seinem "dynamischen SQL". Kein Wunder, denn es ist perfekt getarnt und sieht sowohl auf den ersten als auch auf den zweiten Blick wie gewöhnliches SQL aus!

Hier kommt die Antwort:

Tu es nicht. Immer.

Ihre Vorstellung von "dynamischem" SQL ist im Wesentlichen falsch. Niemand macht das so.

Ich kenne Ihre spezielle Aufgabe nicht, aber Ihre Lösung ist anscheinend falsch. Und es gibt sicherlich einen vernünftigen Weg, dies zu tun. Befolgen Sie einfach diese einfachen Regeln:

  • meta_table entfernen
  • In der Datenbank gespeicherte SQL-Abfragen entfernen
  • Schreiben (oder erstellen) Sie alle Ihre Abfragen in Ihrer Anwendung nur aus zwei Quellen:
    • fest codiertes SQL, vorab in Ihrem Code geschrieben
    • vorbereitete Anweisungen für alle variablen Teile

und haben Sie Ihr gesamtes SQL vollkommen sicher