"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هل الهروب من اقتباسات منفردة دفاع موثوق به ضد حقن SQL؟

هل الهروب من اقتباسات منفردة دفاع موثوق به ضد حقن SQL؟

نشر في 2025-03-23
تصفح:394

Is Escaping Single Quotes a Reliable Defense Against SQL Injection?

حماية حقن SQL: مغالطة اقتباسات واحدة Escape

في مجال تطوير البرمجيات ، فإن منع هجمات حقن SQL أمر بالغ الأهمية. على الرغم من أن استعلامات SQL المعلمة هي أفضل طريقة لتنظيف المدخلات ، إلا أن بعض المطورين لا يزالون يستخدمون آلية الدفاع التي تهرب من عروض الأسعار المفردة وتغلف مدخلات المستخدم في علامات اقتباس مفردة كبديل.

تقنية الهروب المعيبة

تتضمن الطريقة استبدال أي علامات اقتباس مفردة في إدخال المستخدم مع علامات اقتباس مفردة مزدوجة وتجميع السلسلة بأكملها في عروض أسعار واحدة:

sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'"

مبدأ هذه التقنية هو أن أي عروض أسعار فردية التي يدخلها المستخدم يتم تحييدها بشكل فعال لمنع السلسلة من الإنهاء. لذلك ، فإن أي حرف آخر ، مثل Semicolon أو علامة النسبة المئوية ، يصبح جزءًا من السلسلة ولا يتم تنفيذه كأمر.

تعرض الحقن

]

ومع ذلك ، لا يمكن لهذه التقنية التعامل مع الحالات التي قد تحتوي فيها إدخال المستخدم نفسه على علامات اقتباس واحدة مزدوجة. في هذه الحالة ، ستنتهي السلسلة ويمكن تنفيذ بقية المدخلات كأوامر SQL.

مثال على الإدخال

لتوضيح ذلك ، فكر في إدخال المستخدم التالي:

'SensitiveData' HAVING AMOUNT>2000 OR ''=''

بعد التنفيذ ، سيصبح الرمز:

SELECT * FROM ACCOUNT WHERE NAME='SensitiveData' HAVING AMOUNT>2000 OR ''=''

هذا المدخلات يضخ بنجاح البند أو في استعلام SQL ، متجاوزًا التنظيف المتوقع.

اعتبارات أخرى

من المهم ملاحظة أن هناك نقاط ضعف أخرى في تقنية الهروب هذه ، بما في ذلك:

  • لا يمكن الدفاع عن جميع أنواع هجمات حقن SQL ، مثل الهجمات التي تستخدم التعليقات أو غيرها من عمليات الإنصاف.
  • تقديم الأداء والصيانة النفقات العامة.
  • جعل الكود صعب القراءة وفهمه.

أفضل الممارسات

لا تعتمد على تقنيات تنظيف المدخلات المؤقتة ، اتبع أفضل الممارسات لمنع حقن SQL:

  • استخدم معلمة SQL Query أو JDBC Preparation.
  • لا يُسمح إلا بقيم وتنسيقات الإدخال المتوقعة (القوائم البيضاء).
  • يتم استخدام قوائم السوداء فقط إذا لزم الأمر تمامًا وبعد تنفيذ تدابير تخفيف أخرى.
  • تجنب SQL الديناميكي والتسلسل السلسلة.
  • فكر في استخدام الإجراءات المخزنة مع أذونات قاعدة البيانات المحدودة.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3