|العودة للرئيسية
٢٣ مايو ٢٠٢٦

مشاركة الموقع بأمان: التحديات والحلول

SecurityPrivacyWeb Development

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

أول حاجة فكرت فيها كانت: إزاي أحمي بيانات الموقع أثناء النقل؟ الإجابة كانت واضحة — تشفير HTTPS إجباري لكل الاتصالات. بس ده مش كافي. حتى لو الاتصال مشفر، لو السيرفر بيخزن الموقع كنص عادي (plaintext)، أي حد يوصل لقاعدة البيانات هيعرف مكانك. عشان كده استخدمت تشفير إضافي على مستوى التطبيق. الموقع بيتشفّر قبل ما يتخزن في قاعدة البيانات، ومفتاح التشفير محفوظ في مكان آمن منفصل عن قاعدة البيانات.

التحدي التاني كان: مين يقدر يشوف الموقع؟ في طمني، المستخدم هو اللي بيحدد مين يشوف موقعه. كل مشاركة ليها صلاحيات واضحة: إما شخص معين عبر رابط مؤقت، أو أفراد العائلة في الحلقة العائلية. النظام بيتأكد إن كل طلب عرض موقع بيتعمل Validate — مفيش طريقة تقدر تتخطى الصلاحيات وتشوف موقع حد مش شاركه معاك.

روابط المشاركة المؤقتة كانت فكرة أساسية. المستخدم بيختار المدة: 15 دقيقة، ساعة، 3 ساعات، أو يوم كامل. بعد انتهاء المدة، الرابط بيتعطل تلقائيًا ومش بيقدر حد يوصل للموقع تاني. التطبيق بيستخدم توكنات مشفرة (JWT) ليها تاريخ انتهاء صلاحية. حتى لو حد حاول يستخدم الرابط بعد انتهاء الصلاحية، السيرفر هيرفضه فورًا.

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

تحدي تاني واجهته كان استهلاك البطارية. التتبع المستمر للموقع بيستنزف البطارية بسرعة. الحل كان إني أعمل نظام ذكي بيغير تردد التحديث حسب حالة البطارية. لو البطارية فوق 50٪، التحديث بيكون كل 10 ثواني. لو تحت 50٪، بيكون كل 30 ثانية. لو تحت 20٪، بيكون كل دقيقة. كمان استخدمت Significant Location Change بدل Standard Location لما التطبيق يكون في الخلفية.

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

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