Вопрос

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

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

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

что должен мой <cfqueryparam> тег выглядит?

Это было полезно?

Решение

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

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%" />;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top