Question

J'ai été chargé de passer par un certain nombre de ColdFusion les sites qui ont récemment fait l'objet d'un assez méchant attaque par Injection SQL.Fondamentalement, mon travail consiste en l'ajout d' <cfqueryparam> les balises à l'ensemble de la ligne de sql.Pour la plupart, je l'ai eu, mais quelqu'un peut-il me dire comment utiliser cfqueryparam avec l'opérateur LIKE?

Si ma requête ressemble à ceci:

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

que dois-je <cfqueryparam> tag look like?

Était-ce utile?

La solution

@Joel, je suis en désaccord.

select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" />
  1. Ne jamais suggérer à quelqu'un qu'ils devraient "select star." Mauvaise forme!Encore un exemple!(Même copié à partir de la question!)

  2. La requête est pré-compilé et vous devez inclure le caractère générique(s) dans le cadre de l'paramètre passé à la requête.Ce format est plus lisible et fonctionner plus efficacement.

  3. Lors de concaténation de chaîne, utilisez l'opérateur "et commercial" ( & ), pas le signe plus.Techniquement, dans la plupart des cas, plus fonctionne très bien...jusqu'à ce que vous jetez un NumberFormat() dans le milieu de la corde et commencer à se demander pourquoi on vous dit que vous n'êtes pas le passage d'un nombre valide lorsque vous avez vérifié et vous.

Autres conseils

select a,b,c
from  Foo
where name like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top