繁体   English   中英

如何在Javascript中为WebDB或Google Gears等客户端数据库转义数据?

[英]How do I escape data in Javascript for a client-side database like WebDB or Google Gears?

如果我使用像Google Gears或WebDB实现这样的客户端数据库,那么逃避数据以防止SQL注入的最佳方法是什么? 把它包装在encodeURI()中?

此外,我甚至需要担心吗? 这里有一个模糊的地方, http//code.google.com/apis/gears/api_database.html#Database-execute让我觉得它是为我处理的,但我不确定。

如果您使用占位符,则不必担心引用/转义。 所以这:

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

很好。 如果你试图通过粘贴一堆字符串来构建SQL,那么你就会遇到问题,所以不要这样做。 但是,在某些情况下,您需要将字符串粘贴在一起才能获得SQL,但有一些安全的方法可以解决这个问题。 像这样的东西往往是一个常见的情况,你可以使用占位符和字符串连接:

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
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM