هل يراودك القلق في كل مرة ترفع فيها صورك أو معلوماتك الشخصية على الإنترنت أو داخل التطبيقات؟
هل تشعر بالريبة عندما يطلب أحد التطبيقات الوصول إلى بياناتك الحساسة وتتساءل: “إلى أين ستذهب هذه المعلومات؟ ومن يمكنه الوصول إليها؟”
أنت محق في قلقك. فنحن نعيش في عصر انفتاح المعلومات، حيث أصبحت البيانات الشخصية سلعة ثمينة، وسوء التعامل معها قد يؤدي إلى عواقب سيئة.
بات أمان التطبيقات مؤخراً محور اهتمام متزايد لدى الأفراد والشركات على حد سواء؛ فلا أحد يرغب بتعرض معلوماته الشخصية للسرقة أو حساباته الإلكترونية للاختراق. كما أن استقبال هجمات قرصنة تجربة غير محمودة في عُرف الشركات فهي من أسوء التجارب التي قد تهدد سمعتها وثقة عملائها.
ورغم أن الشائع هو أن مسؤولية حماية المعلومات تقع على عاتق مهندسي الأمن السيبراني (Security) أو فرق إدارة السيرفر إلا أنه و في عالم تطبيقات الجوال هناك مجموعة من ممارسات الأمان الأساسية التي يمكن لمطوّري تطبيقات الهواتف المحمولة الإلمام بها وتطبيقها. هذه الممارسات تشكّل خط الدفاع الأول في وجه أي تهديدات أمنية محتملة، وتُعد خطوة ضرورية نحو بناء تطبيقات آمنة وموثوقة منذ المراحل الأولى للتطوير.
في الثالث من آب ٢٠٢٤، استضاف مجتمع Mobile Dev Meetup جلسة تقنية جديدة ضمن فعالياته الشهرية، قدّمها المهندس إبراهيم الطباع تحت عنوان “Security in Mobile Applications”، حيث سلّط الضوء على أهم الجوانب المتعلقة بتأمين التطبيقات المحمولة على مختلف الأصعدة.
شهدت الجلسة حضوراً مميزاً بلغ ٢٥ مشاركاً من مهندسي ومهندسات البرمجيات، تفاعلوا بشكل نشط مع المحاور المطروحة، وشاركوا بنقاشات غنية تنوّعت بين استفسارات تقنية وتبادل خبرات عملية.
الفهرس:
- حماية الكود المصدري (Securing Source Code)
- حماية المتغيرات البيئية الحساسة (Protecting Sensitive Environment Variables)
- التخزين الآمن (Secure Storage)
- حماية البيانات على الشبكة (Safeguarding Network Traffic)
- تثبيت التطبيق (Securing App Installation)
محاور الجلسة:
1. حماية الكود المصدري (Securing Source Code)
تطرّق المهندس إبراهيم إلى أهمية حماية الكود من محاولات الهندسة العكسية، وهي من أكثر التهديدات شيوعاً في تطبيقات الهواتف المحمولة، خصوصاً على نظام Android.
وقد أوصى باستخدام تقنيات تضليل الكود (Code Obfuscation) عبر أدوات مثل ProGuard و R8، والتي لا تكتفي بتقليل حجم الكود، بل تجعل من عملية تحليله واستنتاجه عكسياً أكثر تعقيداً بالنسبة للمهاجمين.
كما شدّد على ضرورة تجنّب تضمين الأكواد الحساسة أو منطق العمل Business Logic مباشرةً داخل التطبيق، والاعتماد بدلاً من ذلك على Backend API لتوفير هذه البيانات بشكل آمن من خلال السيرفر. هذه الممارسة تُعد من الركائز الأساسية في تقليل المخاطر وتعزيز السيطرة على البيانات الحساسة.
2. حماية المتغيرات البيئية الحساسة (Protecting Sensitive Environment Variables)
أُثيرت مسألة تسريب مفاتيح الـ API وكلمات المرور ضمن ملفات الكود المرفوعة على Git. وهي من الأخطاء الشائعة التي قد تُعرّض التطبيقات لاختراقات خطيرة.
أوصى المحاضر بعدم تخزين أي معلومات حساسة داخل التطبيق، والاعتماد على حلول بديلة. من أبرزها استغلال إمكانيات أدوات CI/CD، حيث يمكن تمرير هذه القيم الحساسة مشفّرة كـ (Secret) أثناء عملية البناء والتوزيع (Build and Distribution) دون تضمينها داخل التطبيق نفسه.
هذه الممارسة تضمن حماية المفاتيح من الوصول غير المصرّح به، وتمنح فرق التطوير تحكماً أكبر في إدارة المفاتيح وتحديثها بشكل آمن ومنهجي.
أحد المشاركين اقترح استخدام أدوات أخرى مثل Firebase Remote Config لتعديل القيم دون الحاجة لإصدار تحديث جديد.
3. التخزين الآمن (Secure Storage)
تم التطرق إلى الفروقات بين خيارات التخزين على Android وiOS، مع التركيز على:
- Keychain في iOS.
- EncryptedSharedPreferences و Android Keystore في Android.
كما نُبّه إلى تجنّب الاعتماد على SharedPreferences التقليدية أو ملفات SQLite بدون تشفير في حالة معلومات المستخدم الشخصية أو المالية.
4. حماية البيانات على الشبكة (Safeguarding Network Traffic)
أكد المحاضر على وجوب استخدام HTTPS دائماً مع التحقق من الشهادات عبر Certificate Pinning لتقليل احتمالية هجمات Man In The Middle.
كانت هذه النقطة من أكثر النقاط إثارة للجدل أثناء الجلسة، فلا تخلو هذه التقنية من مشاكل و تحديات، تساءل أحد الحضور عن مدى جدوى Certificate Pinning في ظل التحديثات المتكررة للشهادات، وتم التوافق على ضرورة وجود خطة لإدارة التحديثات.
5. تثبيت التطبيق (Securing App Installation)
تم الحديث عن مخاطر تحميل التطبيقات من خارج المتاجر الرسمية، بالإضافة إلى ضرورة التحقق من Jailbreak / Root Detection لضمان أن التطبيق لا يعمل في بيئة غير آمنة.
مكتبة RootBeer تُعتبر واحدة من أكثر الطرق فعالية وسهولة لاكتشاف Root access وهي مكتبة مفتوحة المصدر تُقدّم مجموعة من الفحوصات الجاهزة.
import com.scottyab.rootbeer.RootBeer
fun checkIfDeviceRooted(context: Context): Boolean {
val rootBeer = RootBeer(context)
return rootBeer.isRooted
}
الختام
شكّلت الجلسة فرصة مهمة لتبادل الخبرات بين المطورين حول التحديات الأمنية اليومية في بناء التطبيقات المحمولة. وقد أكد المهندس إبراهيم على أن أمن التطبيق ليس ميزة إضافية، بل ضرورة أساسية يجب التفكير بها منذ المراحل الأولى للتطوير. كما اتفق الجميع على أهمية نشر الوعي الأمني داخل فرق التطوير وتشجيع الممارسات مثل مراجعة الكود من قبل أشخاص أكفّاء (Code Review) وإقامة اختبارات الاختراق بشكل دوري (Penetration Testing).
روابط ذات صلة
ألبوم الصور
اكتشاف المزيد من Mobile Dev Meetup
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.
معلومات قيمة ومهمة لكل مطور تطبيقات! الأمن لازم يكون أولوية قصوى من البداية، مش بس بعد ما التطبيق ينتشر. شكرًا على النصائح المفيدة.
سعيدة أن المعلومات نالت إعجابك .. أتفق معك تماماً اجراءات الامان يجب أن تراعى منذ اليوم الاول في التطوير.