Comment puis-je protéger vos données en Javascript pour une base de données côté client comme WebDB ou Google Gears?

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

Question

Si j'utilise une base de données côté client comme Google Gears ou une implémentation WebDB, quelle est la meilleure façon d'échapper aux données afin d'empêcher l'injection SQL? Enveloppez-le dans encodeURI ()?

De plus, dois-je même besoin de se inquiéter à ce sujet? Il y a un texte de présentation ici, http://code.google.com/apis/ engrenages / api_database.html # Database-exécuter qui fait me penser qu'il est manipulé pour moi, mais je ne savais pas.

Était-ce utile?

La solution

Vous n'avez pas à vous soucier de citer / fuite si vous utilisez des espaces réservés. Donc ceci:

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

est très bien-est. Si vous essayez de construire SQL en collant un tas de cordes ensemble alors vous allez avoir des problèmes alors ne pas le faire. Cependant, il y a des cas où vous devrez coller des chaînes de caractères pour obtenir votre SQL mais il existe des moyens sûrs autour de cela; quelque chose comme ceci a tendance à être un cas fréquent où vous pouvez utiliser les deux espaces réservés et concaténation de chaîne:

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
);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top