سؤال

فيما يلي بعض الاحتمالات لبدء المحادثة:

  1. الهروب من كافة المدخلات عند التهيئة.
  2. الهروب من كل قيمة، ويفضل أن يكون ذلك عند إنشاء SQL.

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

الحل الثاني منطقي أكثر، ولكن الهروب يدويًا من كل قيمة يعد أمرًا صعبًا.

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

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

المحلول

كما يقولRob Walker، فإن الاستعلامات ذات المعلمات هي أفضل رهان لك.إذا كنت تستخدم أحدث وأفضل PHP، فإنني أوصي بشدة بإلقاء نظرة عليه شركة تنمية نفط عمان (كائنات بيانات PHP).هذه مكتبة تجريد قاعدة بيانات أصلية تدعم مجموعة واسعة من قواعد البيانات (بما في ذلك MySQL بالطبع) بالإضافة إلى البيانات المُعدة ذات المعلمات المسماة.

نصائح أخرى

البيانات المعدة هي أفضل إجابة.لديك اختبار لأنه من الممكن أن ترتكب الأخطاء!

يرى هذا سؤال.

سأذهب مع استخدام البيانات المعدة.إذا كنت تريد استخدام البيانات المعدة، فربما تريد التحقق من وظائف PDO الخاصة بـ PHP.لا يتيح لك هذا تشغيل البيانات المعدة بسهولة فحسب، بل يتيح لك أيضًا أن تكون أكثر حيادًا عن قاعدة البيانات من خلال عدم استدعاء الوظائف التي تبدأ بـ mysql_، أو mysqli_، أو pgsql_.

قد تستحق شركة تنمية نفط عمان ذلك في يوم من الأيام، لكنها لم تصل إلى هذا الحد بعد.إنها DBAL وقوتها (من المفترض) هي جعل التبديل بين البائعين أكثر سهولة.إنه ليس مصممًا حقًا لالتقاط حقن SQL.

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

لقد استخدمت دائمًا الحل الأول لأنه في 99٪ من الوقت، توجد متغيرات $_GET, $_POST, ، و $_COOKIE لا يتم إخراجها إلى المتصفح أبدًا.لن تقوم أيضًا بكتابة تعليمات برمجية عن طريق الخطأ باستخدام حقنة SQL (إلا إذا كنت لا تستخدم علامات الاقتباس في الاستعلام)، بينما مع الحل الثاني، يمكنك بسهولة أن تنسى الهروب من إحدى سلاسلك في النهاية.

في الواقع، السبب الذي يجعلني أفعل ذلك دائمًا بهذه الطريقة هو أن جميع مواقعي تحتوي على إعداد "magic_quotes" افتراضيًا، وبمجرد كتابة الكثير من التعليمات البرمجية باستخدام أحد هذين الحلين، سيستغرق التغيير الكثير من العمل إلى الآخر.

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