هذه المعلومات موجَّهة للمطوّرين الذين لديهم تطبيقات تشتمل على ثغرة إدخال رموز SQL.
التغييرات الجارية
يحتوي تطبيق أو أكثر من تطبيقاتك على ثغرة إدخال رموز SQL التي يجب إصلاحها. يرجى الرجوع إلى الإشعار في حسابك على Play Console. وبعد مرور المواعيد النهائية الموضّحة في حسابك على Play Console، قد يتم حذف أيّ تطبيقات تحتوي على ثغرات أمنية لم يتم إصلاحها من Google Play.
الإجراء المطلوب
- سجِّل الدخول إلى حسابك على Play Console، وانتقل إلى قسم "التنبيهات" لمعرفة التطبيقات المتأثرة والمواعيد النهائية لحل هذه المشاكل.
- حدِّث تطبيقاتك المتأثرة وأصلِح الثغرات الأمنية.
- أرسِل النسخ المُحدّثة من تطبيقاتك المتأثرة.
وفور إعادة الإرسال، سيخضع تطبيقك للمراجعة مرة أخرى. ويمكن أن تستغرق هذه العملية عدة ساعات. إذا اجتاز التطبيق المراجعة وتم نشره بنجاح، لا يلزم اتخاذ أي إجراء آخر. وإذا أخفق التطبيق في اجتياز المراجعة، لن يتم نشر إصدار التطبيق الجديد وستتلقى إشعارًا بالبريد الإلكتروني.
تفاصيل إضافية
يمكن أن تكون عمليات التنفيذ المتعلقة بطلب البحث والتحديث والحذف في عناصر 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". لمزيد من التوضيح بشأن الخطوات المطلوبة لحلّ هذه المشكلة، يمكنك التواصل مع فريق دعم مطوّري البرامج.