مقدمة
بما انني بصدد نشر سكربتات محدثة لنشر النتائج - قد تكون نشرت وقت قراءتك - فكان لابد من طرح سؤال مهم لما ستم ايقاف التضمين في الاكواد الجديدة ؟
رغم ان عملية تضمين تطبيق الويب مهمة جدا داخل صفحاتك الخاصة او المقالات او حتى موقعك لما توفره من عملية اعادة التصميم للموقع او تفادي الخروج منه الا ان جوجل تصر على عدم تضمينه وايضا اظهار رسالة للزائر "أنشأ هذا التطبيق أحد مستخدمي "برمجة تطبيقات Google".
قد يكون التحذير واضح لكنني كنت ارى انه مبالغ فيه خصوصاً انني مثلا من صمم الصفحة او الموقع المضمن فيه التطبيق فقررت ان اسأل Gemini واليكم الملخص.
السؤال
ما هى المخاطر المتوقعة في حالة تضمين تطبيق الويب في صفحات اخرى؟الإجابة
سؤال ممتاز وفي صميم أمان تطبيقات الويب!
عندما تحاول تضمين تطبيق ويب (مثل تطبيق Google Apps Script الخاص بك) في صفحة ويب أخرى باستخدام إطار (<iframe>)، فإنك تفتح الباب أمام بعض المخاطر الأمنية المحتملة. رسالة "script.google.com refused to connect" التي واجهتها هي في الواقع إجراء أمني يطبقه Google Apps Script بشكل افتراضي لمنع هذه المخاطر، خاصةً مخاطر Clickjacking.
إليك شرح للمخاطر الرئيسية المرتبطة بتضمين تطبيق ويب في صفحات أخرى:
- Clickjacking (اختطاف النقرات):
الخطر في سياق تطبيقك: يمكن للمهاجم تضمين صفحة البحث (index.html) لتطبيقك في موقعه. ثم يصمم واجهة وهمية فوقها ويخدع المستخدم (ربما عن طريق رسالة احتيالية) للنقر على زر يبدو بريئاً، بينما النقر في الواقع يتم على زر "عرض" في تطبيقك المضمن، بعد أن يكون المهاجم قد قام بملء حقول الصف ورقم الجلوس مسبقاً بقيم يختارها. إذا كان يمكن للمهاجم أيضاً رؤية محتوى الإطار (وهو ممكن في بعض الحالات أو مع ثغرات معينة)، فقد يتمكن من سرقة نتائج طالب معين.
- UI Redressing (إعادة تصميم الواجهة):
Information Leakage (تسريب المعلومات):
في بعض السيناريوهات الأقل حماية (ليس بالضرورة مع وضع الحماية الصارم لـ Apps Script)، قد تتمكن الأكواد البرمجية (JavaScript) في الصفحة الأم التي تحتوي على الإطار من قراءة محتوى الإطار المضمن. إذا كان تطبيقك يعرض بيانات حساسة (مثل نتائج الطلاب)، فقد يتمكن موقع الويب الخبيث من قراءة هذه البيانات المعروضة وسرقتها. وضع الحماية SandboxMode.IFRAME وسياسة المصدر الواحد (Same-Origin Policy) في المتصفحات يقللان بشكل كبير من هذا الخطر في سياق Apps Script، لكن التضمين يظل نقطة ضعف محتملة إذا تم العثور على طريقة لتجاوز هذه الحماية.
- Phishing (التصيد الاحتيالي):
- كيف تمنع Google Apps Script هذه المخاطر؟
رأس X-Frame-Options: كما ذكرت، تطبيق Google Apps Script يضيف افتراضياً رأس استجابة HTTP يسمى X-Frame-Options (عادةً بقيمة SAMEORIGIN أو DENY في سياقات معينة) يخبر المتصفح بمنع عرض هذه الصفحة داخل إطار (<iframe>) على نطاق آخر غير script.google.com نفسه. الخطأ "refused to connect" هو نتيجة مباشرة لهذا الإجراء الأمني. Sandbox Mode (وضع الحماية): وضع الحماية مثل IFRAME (وهو الموصى به والذي تستخدمه) يضع قيودًا صارمة على الأكواد البرمجية التي تعمل داخل الإطار المضمن. هذا يقلل من قدرة الأكواد الخبيثة (إذا تمكنت من الوصول إلى داخل الإطار) على التفاعل مع الصفحة الأم أو الوصول إلى موارد خارجية بشكل غير مصرح به.
الخلاصة
المخاطر الرئيسية للتضمين تتعلق باحتيال المستخدم (Clickjacking، UI Redressing) وسرقة البيانات (إذا أمكن تجاوز الحماية). جوجل تتخذ إجراءات قوية (مثل X-Frame-Options) لمنع التضمين غير المصرح به في نطاقات أخرى بالتحديد للحماية من هذه المخاطر. ظهور خطأ "رفض الاتصال" كان في الواقع مؤشراً على أن هذه الحماية كانت تعمل.
عزيزي القارئ قد تسأل انت سؤال اخرى بما انني من صمم الصفحة ما المخاطرة ؟ الاجابة وباختصار استطيع معرفة رابط تطبيقك بسهولة من الموقع وايضا تقليد موقعك او استغلاله فيما سبق ذلك.
اذا كنت معجب بمحتوى المدونة يمكنك تحميل تطبيق اندوريد للمدونة من اعلى الصفحة لتتابع كل جديد وتكون هناك وسيلة تواصل بيننا.