如何在JavaScript中为客户端数据库(例如WebDB或Google Gears)逃脱数据?
-
30-09-2019 - |
题
如果我使用的是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
);
不隶属于 StackOverflow