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?

È stato utile?

Soluzione

@Joel, non sono d'accordo.

select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" />
  1. Non suggerire mai a qualcuno che dovrebbero "selezionare la stella". Cattiva forma!Anche per un esempio!(Anche copiato dalla domanda!)

  2. 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.

  3. 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%" />;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top