cfqueryparam con l'operatore like in ColdFusion
-
09-06-2019 - |
Domanda
Mi è stato assegnato il compito di visitare una serie di siti ColdFusion che sono stati recentemente oggetto di un attacco SQL Injection piuttosto brutto.Fondamentalmente il mio lavoro prevede l'aggiunta <cfqueryparam
> tag a tutto il file sql in linea.Per la maggior parte ho capito, ma qualcuno può dirmi come usare cfqueryparam con l'operatore LIKE?
Se la mia query è simile a questa:
select * from Foo where name like '%Bob%'
cosa dovrebbe mio <cfqueryparam
> che aspetto ha il tag?
Soluzione
@Joel, non sono d'accordo.
select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" />
Non suggerire mai a qualcuno che dovrebbero "selezionare la stella". Cattiva forma!Anche per un esempio!(Anche copiato dalla domanda!)
La query è precompilata ed è necessario includere i caratteri jolly come parte del parametro passato alla query.Questo formato è più leggibile e funzionerà in modo più efficiente.
Quando si esegue la concatenazione di stringhe, utilizzare l'operatore e commerciale (&), non il segno più.Tecnicamente, nella maggior parte dei casi, plus funzionerà perfettamente...finché non lanci un NumberFormat() nel mezzo della stringa e inizi a chiederti perché ti viene detto che non stai passando un numero valido quando hai controllato e lo sei.
Altri suggerimenti
select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;