Ho una tabella come ...
THINGS_TABLE
============
thing_key int PRIMARY KEY
thing_num varchar(20)
thing_title varchar(20)
thing_description varchar(20)
E alcune funzioni di ColdFusion (codice lato server) che possono aggiungere, modificare ed eliminare da questa tabella. Ad esempio una funzione createThing potrebbe apparire come questa in ColdFusion. I i parametri di cfqueryparam nella cfquery dovrebbero impedire l'iniezione SQL , quindi Non credo che l'iniezione SQL sia qualcosa di cui devo preoccuparmi.
<cffunction name="createThing" access="remote" returntype="void">
<cfargument name="thing_num" type="string" required="yes">
<cfargument name="thing_title" type="string" required="yes">
<cfargument name="thing_description" type="string" required="yes">
<!--- write to db --->
<cfquery name="createThingQuery" datasource="my_datasource">
INSERT INTO THINGS_TABLE (thing_num, thing_title, thing_description) values (
<cfqueryparam cfsqltype="cf_sql_varchar" value='#thing_num#'>,
<cfqueryparam cfsqltype="cf_sql_varchar" value='#thing_title#'>,
<cfqueryparam cfsqltype="cf_sql_varchar" value='#thing_description#'>)
</cfquery>
</cffunction>
È sicuro rivelare i nomi effettivi delle colonne nelle chiamate ajax che eseguono il codice lato server? Ad esempio, una chiamata Ajax che potrebbe apparire come questa:
$.ajax({
type: "POST",
url: "thingFunctions.cfc",
data: { method : "createThing",
thing_num : "the number",
thing_title : "the title",
thing_description : "the description"
}})
Questo ajax rende davvero ovvio quali siano i nomi effettivi delle colonne nel database, ed è certamente possibile che la mia funzione ColdFusion usi nomi di argomenti diversi, ma esiste davvero qualche vantaggio nell'usare nomi diversi? A me sembra che potrebbe solo rendere il codice più confuso per uno sviluppatore da leggere, senza fornire alcun vantaggio dal punto di vista della sicurezza.
Inoltre, forse ci sono altri problemi nell'usare chiamate ajax come questa a cui non sto pensando? Cioè un utente potrebbe forse modificare la pagina JavaScript e chiamare il mio codice ColdFusion in modi in cui non era originariamente previsto?