Pergunta

Recebi a tarefa de examinar vários sites do ColdFusion que recentemente foram alvo de um ataque bastante desagradável de injeção de SQL.Basicamente meu trabalho envolve adicionar <cfqueryparam> tags para todo o sql embutido.Na maior parte do tempo eu entendi, mas alguém pode me dizer como usar o cfqueryparam com o operador LIKE?

Se minha consulta for assim:

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

o que deveria ser meu <cfqueryparam> tag se parece?

Foi útil?

Solução

@Joel, tenho que discordar.

select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" />
  1. Nunca sugira a alguém que deve "selecionar estrela". Má forma!Até para dar um exemplo!(Até copiado da pergunta!)

  2. A consulta é pré-compilada e você deve incluir os caracteres curinga como parte do parâmetro que está sendo passado para a consulta.Este formato é mais legível e funcionará com mais eficiência.

  3. Ao fazer a concatenação de strings, use o operador E comercial (&), não o sinal de mais.Tecnicamente, na maioria dos casos, o plus funcionará perfeitamente...até que você jogue um NumberFormat() no meio da string e comece a se perguntar por que está sendo informado de que não está passando um número válido quando você verificou e está.

Outras dicas

select a,b,c
from  Foo
where name like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top