cfqueryparam с оператором like в ColdFusion

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

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

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

что мой <cfqueryparam> тег похож?

2 ответа

Решение

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

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

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

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

select a,b,c
from  Foo
where name like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;
Другие вопросы по тегам