CF – controllo parametri



Capita spesso di fare delle query per la selezione di un singolo record nel db passando la chiave primaria (numerica), oppure fare filtri particolari.

Dei buontemponi però si divertono a passare dei valori come parametro (via GET) inserendo “OR 1=1″ dopo il numero della vostra chiave e facendo in modo di saltare il vostro filtro e visualizzare tutti gli elementi presenti nella vostra tabella.

Per risolvere il problema si può inserire nella query al posto di

WHERE id = #id#

il tag ColdFusion

WHERE id =
<cfqueryparam value="#id#" cfsqltype="cf_sql_integer">

che controlla il tipo di dato passato come parametro.

Questo genera un errore, però non può essere usato in una query nella cui dichiarazione ci siano i parametri CFCACHEWITHIN e CFCACHEAFTER

Come soluzione si può inserire nel application.cfm questo veloce controllo per tutti i parametri GET numerici.



<cfsetting enablecfoutputonly="yes">
<cfset urlNumericParam="id_news,id_servizio,id_prodotto,id_categoria">
<cfloop index="i" list="#urlNumericParam#">
<cfset parametro="url." & i>
<cfif isDefined(parametro)><br>
<cfif not isNumeric(evaluate(parametro))>
<cfoutput><H1>PARAMETRO ERRATO</H1></cfoutput>
<cfabort>
</cfif>
</cfif>
</cfloop>
<cfsetting enablecfoutputonly="no">

Se trovi questo articolo su un blog diverso da “blog.merlinox.com” si tratta probabilmente di una copia non autorizzata. L’indirizzo originale di questo articolo è: CF – controllo parametri scritto da .

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>