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">
Approfondimenti online
La tecnologia informatica ha fatto passi da gigante. In modo particolare Google, che con il suo analizzatore di testo, è in grado di proporre collegamenti contestuali a quanto hai appena letto. Questi i link pubblicitari proposti da Adsense.









Le ultime al bancone