Frage

Ich wurde damit beauftragt, eine Reihe von ColdFusion-Sites zu durchsuchen, die kürzlich Gegenstand eines ziemlich schlimmen SQL-Injection-Angriffs waren.Im Grunde geht es bei meiner Arbeit um das Hinzufügen <cfqueryparam> Tags für alle Inline-SQL.Im Großen und Ganzen habe ich es verstanden, aber kann mir jemand sagen, wie man cfqueryparam mit dem LIKE-Operator verwendet?

Wenn meine Anfrage so aussieht:

select * from Foo where name like '%Bob%'

was soll mein <cfqueryparam> Tag aussehen?

War es hilfreich?

Lösung

@Joel, da muss ich widersprechen.

select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" />
  1. Schlagen Sie niemals jemandem vor, dass er "Stern auswählen" sollte. Schlechte Form!Sogar als Beispiel!(Sogar aus der Frage kopiert!)

  2. Die Abfrage ist vorkompiliert und Sie sollten das/die Platzhalterzeichen als Teil des an die Abfrage übergebenen Parameters einschließen.Dieses Format ist besser lesbar und läuft effizienter.

  3. Verwenden Sie bei der Zeichenfolgenverkettung den kaufmännischen Und-Operator (&) und nicht das Pluszeichen.Technisch gesehen funktioniert plus in den meisten Fällen einwandfrei ...bis Sie ein NumberFormat() in die Mitte der Zeichenfolge werfen und sich fragen, warum Ihnen gesagt wird, dass Sie keine gültige Zahl übergeben, obwohl Sie dies überprüft haben, und das ist der Fall.

Andere Tipps

select a,b,c
from  Foo
where name like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top