Domanda

Se sto utilizzando un database client-side come Google Gears o un'implementazione WebDB, qual è il modo migliore per sfuggire ai dati a iniezione SQL prevenire? Avvolgerlo in encodeURI ()?

Inoltre, faccio nemmeno bisogno di preoccuparsi? C'è un trafiletto qui, http://code.google.com/apis/ ingranaggi / api_database.html # Database-esecuzione che mi fa pensare è gestita per me, ma non ero sicuro.

È stato utile?

Soluzione

Non c'è bisogno di preoccuparsi di citazione / fuggire se si sta utilizzando i segnaposto. Quindi questo:

resultSet = db.execute (
  'INSERT INTO MYTABLE VALUES (?, ?, ?) WHERE id=?',
  [some, variables, that_you_got_from, somewhere]
)

va bene così com'è. Se si sta cercando di costruire SQL incollando un gruppo di stringhe insieme, allora si sta andando ad avere problemi in modo da non farlo. Tuttavia, ci sono casi in cui avrete bisogno di incollare le stringhe insieme per ottenere il vostro SQL, ma ci sono modi sicuri di tutto questo; qualcosa come questo tende ad essere un caso comune in cui è possibile utilizzare entrambi i segnaposto e concatenazione di stringhe:

var list = some_array_of_unknown_size_and_origin;
var qs   = [ ];

for(var i = 0; i < list.size; ++i) 
    qs.push('?');

var rs = db.execute(
    'UPDATE some_table SET col = 'blahblah' WHERE id IN (' + qs.join(',') + ')',
    list
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top