كيف يمكنني الهروب من البيانات في JavaScript للحصول على قاعدة بيانات من جانب العميل مثل WebDB أو Google Gears؟

StackOverflow https://stackoverflow.com/questions/4332524

سؤال

إذا كنت أستخدم قاعدة بيانات من جانب العميل مثل 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 مع الإسناد
لا تنتمي إلى StackOverflow
scroll top