¿Cómo me escape de datos en una base de datos de Javascript del lado del cliente como WEBDB o Google Gears?

StackOverflow https://stackoverflow.com/questions/4332524

Pregunta

Si estoy usando una base de datos del lado del cliente como Google Gears o una aplicación WebDB, ¿cuál es la mejor manera de escapar de los datos a la inyección de SQL Prevenir? Envolverlo en encodeURI ()?

Además, qué me tiene que preocuparse al respecto? Hay una propaganda aquí, http://code.google.com/apis/ engranajes / api_database.html # base de datos a ejecutar que me hace pensar que es manejado por mí, pero no estaba seguro.

¿Fue útil?

Solución

Usted no tiene que preocuparse por citar / escapar si está utilizando marcadores de posición. Así que esto:

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

está bien como está. Si usted está tratando de construir SQL pegando un montón de cadenas juntas, entonces vamos a tener problemas por lo que no hacer eso. Sin embargo, hay casos en los que tendrá que pegar cadenas juntas para obtener su SQL pero hay maneras seguras de todo eso; algo como esto tiende a ser un caso común donde se puede utilizar ambos marcadores de posición y la concatenación de cadenas:

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
);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top