كيف يمكنني الهروب من البيانات في 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