هل استخدام قواعد البيانات غير SQL-تغني عن الحاجة لحراسة ضد "حقن SQL"؟

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

سؤال

وهذا قد يبدو وكأنه السؤال الذي يطرح نفسه (أو ليس واضحا جدا)، ولكن اسمحوا لي أن أشرح. أنا الترميز موقعا على محرك جوجل التطبيق باستخدام التكنولوجيا قاعدة بيانات جوجل، جداول كبيرة. فإن أي المبرمجون محرك التطبيقات يعرف أن جوجل لديها قناعاتها لغتها الاستعلام محدودة دعا GQL. ونتيجة لذلك، يغريني عدم القيام بأي فحص لSQL (أو GQL) حقن في تطبيقي منذ أفترض جوجل لا تستخدم استعلام سلسلة الخام على الطرق الخلفية لجلب البيانات.

وعلاوة على ذلك، مكتبات لتقنيات DB مثل كاوتش دي بي، MongoDB، والكائن أو وثيقة أخرى (ويعرف أيضا باسم NoSQL) يبدو قواعد البيانات لتفادي الحاجة إلى معرفة ما إذا كان المستخدم الخبيثة هو حقن أوامر التلاعب قاعدة البيانات. وكثيرا ما تكون المكتبات التي الخريطة مباشرة الكائنات في قاعدة البيانات في الاعتراض باللغة التي تختارها. أعرف أن هناك العديد من المكتبات SQL التي تفعل ذلك أيضا، ولكن أفترض أن على مستوى ما هم الجمع بين المعلمات لتشغيل استعلام عبر سلسلة، وthusly لا بد لي من الاستمرار في استخدام حماية حقن SQL حتى مع هذه الأطر.

وأنا يجري قصيرة النظر؟ أم أنها فقط مسألة وقت حتى النظام DB العظيم القادم يأخذ عقد وبعد ذلك سوف نرى الحقن في هذه النظم؟

هل كانت مفيدة؟

المحلول

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

وقواعد البيانات مع واجهة بحتة تستند كائن ليست محصنة ضد الضعف حقن، تماما مثل الاستفسارات parameterised هي في SQL. لا يوجد شيء يمكن للمهاجم ضعت في سلسلة له للخروج من سياق الحرفي سلسلة التي كنت قد وضعت له.

ولكن GQL هو على وجه التحديد ليست واحدة منها. انها لغة الاستعلام سلسلة، وإذا ذهبت وصل مادة إلغاؤها غير موثوق بها في استعلام مثل "WHERE title='%s'" % title، كنت مجرد معرضة للخطر مثل كنت مع كامل على SQL. ربما محدودية قدرات GQL تجعل الأمر أكثر صعوبة لاستغلال ذلك لتقديم تنازلات تماما التطبيق، ولكن بالتأكيد لم يكن من المستحيل بشكل عام، وفي أفضل حال طلبك لا يزال خطأ وسوف تقع على عندما يحاول الناس لاستخدام شرعيا الفواصل العليا.

وGQL يحتوي على واجهة ربط المعلمة. استخدامها. مقاومة إغراء القرصنة السلسلة.

نصائح أخرى

وSQL-مجموعات فرعية مثل GQL الواضح أنه ما زال تهم أنفسهم مع ذلك - ولكن يجب أن قواعد البيانات غير SQL-نقية مثل كاوتش دي بي، فولدمورت، وما إلى ذلك وضعت والحصول على البيانات دون قلق لشن هجمات على غرار حقن SQL

وهذا ولكن لا عذر لكم من القيام التحقق من صحة المحتوى، لأنه في حين أنه قد لا يكسر قاعدة البيانات، فإنه قد كسر التطبيق الخاص بك والسماح أشياء مثل XSS (إذا كان هو التطبيق على شبكة الإنترنت).

يستخدم

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

وحقن SQL ليست سوى مجموعة فرعية من نوع ثغرة أمنية في الذي يحصل على تقييم أي مساهمة غير المنضبط.

وtechincally، هل يمكن أن "حقن" جافا سكريبت وغيرها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top