簡體   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