cfqueryparam с оператором like в ColdFusion - PullRequest
24 голосов
/ 05 сентября 2008

Мне было поручено пройти через несколько сайтов ColdFusion, которые недавно стали объектом довольно неприятной атаки SQL-инъекций. В основном моя работа включает добавление тегов <cfqueryparam> ко всем встроенным SQL. По большей части у меня получилось, но кто-нибудь может сказать мне, как использовать cfqueryparam с оператором LIKE?

Если мой запрос выглядит так:

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

как должен выглядеть мой <cfqueryparam> тег?

Ответы [ 2 ]

47 голосов
/ 06 сентября 2008

@ Джоэл, я должен не согласиться.

select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" />
  1. Никогда не предлагайте кому-то «выбрать звезду». Плохой тон! Даже для примера! (Даже скопировал с вопроса!)

  2. Запрос предварительно скомпилирован, и вы должны включить подстановочный знак (символы) как часть параметра, передаваемого в запрос. Этот формат более читабелен и будет работать более эффективно.

  3. При объединении строк используйте оператор амперсанда (&), а не знак плюс. Технически, в большинстве случаев, плюс будет работать просто отлично ... пока вы не бросите NumberFormat () в середине строки и не начнете удивляться, почему вам говорят, что вы не передаете действительное число, когда проверили и вы.

0 голосов
/ 16 мая 2013
select a,b,c
from  Foo
where name like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;
...