Frage

Wenn ich eine clientseitige Datenbank wie Google Gears oder eine WebDB Implementierung verwenden, was ist der beste Weg, um die Daten zu verhindern SQL-Injektion zu entkommen? Wickeln Sie es in encodeURI ()?

Außerdem brauche ich noch Sorgen darüber? Es gibt eine Klappentext hier, http://code.google.com/apis/ Getriebe / api_database.html # Datenbank-execute das macht ich denke, es ist für mich behandelt, aber ich war nicht sicher.

War es hilfreich?

Lösung

Sie haben keine Sorgen zu machen zitieren / entkommen, wenn Sie Platzhalter verwenden. So folgt aus:

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

ist in Ordnung, wie sie ist. Wenn Sie mit dem Einfügen eine Reihe von Zeichenketten zu bauen SQL sind versuchen, zusammen dann wirst du Probleme haben, so das nicht tun. Es gibt jedoch Fälle, in denen Sie benötigen, um Zeichenketten einfügen zusammen, um Ihre SQL zu bekommen, aber es gibt sicher Möglichkeiten, um das; so etwas wie dies neigt dazu, einen gemeinsamen Fall zu sein, wo Sie beide Platzhalter und String-Verkettung verwenden können:

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
);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top