إصلاح ثغرة إدخال رموز SQL

هذه المعلومات موجَّهة للمطوّرين الذين لديهم تطبيقات تشتمل على ثغرة إدخال رموز SQL.

التغييرات الجارية

يحتوي تطبيق أو أكثر من تطبيقاتك على ثغرة إدخال رموز SQL التي يجب إصلاحها. يرجى الرجوع إلى الإشعار في حسابك على Play Consoleوبعد مرور المواعيد النهائية الموضّحة في حسابك على Play Console، قد يتم حذف أيّ تطبيقات تحتوي على ثغرات أمنية لم يتم إصلاحها من Google Play.

الإجراء المطلوب​

  1. سجِّل الدخول إلى حسابك على Play Console، وانتقل إلى قسم "التنبيهات" لمعرفة التطبيقات المتأثرة والمواعيد النهائية لحل هذه المشاكل.
  2. حدِّث تطبيقاتك المتأثرة وأصلِح الثغرات الأمنية.
  3. أرسِل النسخ المُحدّثة من تطبيقاتك المتأثرة.

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

تفاصيل إضافية

يمكن أن تكون عمليات التنفيذ المتعلقة بطلب البحث والتحديث والحذف في عناصر ContentProviders التي تم تصديرها معرَّضة لإدخال رموز SQL بها في حال تمرير مُدخلات لم يتم التحقق منها إلى عبارات SQL. ويمكن لأحد التطبيقات الضارة إضافة مُدخل تمت كتابته للدخول إلى البيانات الخاصة أو إتلاف محتويات قواعد البيانات. يمكنك حل هذه المشكلة بالطرق التالية:

إذا لم تكن هناك حاجة إلى كشف عنصر ContentProvider  الذي يتضمّن ثغرة أمنية للتطبيقات الأخرى:

  • يمكنك تعديل علامة <provider> لعنصر ContentProvider الذي يتضمّن الثغرة الأمنية في ملف البيان لتعيين القيمة android:exported="false". وسيؤدي هذا إلى منع التطبيقات الأخرى من إرسال ملفات Intent إلى عنصر ContentProvider الذي يتضمّن الثغرة الأمنية.
  • يمكنك أيضًا تعيين السمة android:permission إلى إذن يتضمّن android:protectionLevel="signature" لمنع التطبيقات التي صمَّمها مطوّرو برامج آخرون من إرسال ملفات Intent إلى عنصر ContentProvider الذي يتضمّن الثغرة الأمنية.

إذا كانت هناك حاجة إلى كشف عنصر ContentProvider  الذي يتضمّن ثغرة أمنية للتطبيقات الأخرى:

  • يمكنك منع إدخال رموز SQL في SQLiteDatabase.query عن طريق استخدام الوضع المقيّد مع خريطة إسقاط. ويتم استخدام الوضع المقيّد للحماية من عبارات الاختيار الضارة وخريطة الإسقاط للحماية من عبارات الإسقاط الضارة. وينبغي عليك استخدام كل من هاتين الميزتين لضمان أمان طلبات البحث.
  • يمكنك منع إدخال رموز SQL في SQLiteDatabase.update وSQLiteDatabase.delete عن طريق استخدام عبارة اختيار تستخدم معلَمة "?" باعتبارها معلَمة قابلة للاستبدال ومجموعة منفصلة من وسيطات الاختيار. ويجب ألا تتكوَّن عبارة الاختيار التي تستخدمها من مُدخلات غير موثوق بها.

تسرّنا مساعدتك

إذا كان لديك أسئلة فنية بشأن الثغرات، يمكنك طرحها على موقع Stack Overflow واستخدام العلامة "android-security". لمزيد من التوضيح بشأن الخطوات المطلوبة لحلّ هذه المشكلة، يمكنك التواصل مع فريق دعم مطوّري البرامج.

هل كان ذلك مفيدًا؟

كيف يمكننا تحسينها؟
false
القائمة الرئيسية
11345067916421413114
true
مركز مساعدة البحث
false
true
true
true
true
true
5016068
false
false
false
false
false