قد تضم صفحة جامعية خريطة أو عارض فيديو أو أداة من نطاق آخر داخل iframe. السؤال ليس فقط هل ظهرت الأداة، بل هل حصلت على إمكانات المتصفح التي تحتاجها وهل بقيت الإطارات الأخرى محرومة منها؟ مشروع تخرج في أمن تطبيقات الويب يمكن أن يبني صفحة اختبار بثلاثة إطارات: أداة من الأصل نفسه، خدمة تجريبية من أصل ثانٍ، وإطار غير موثوق. يغيّر الفريق سياسة الصفحة وسمة allow ثم يقارن ما يحدث عند طلب ميزة مثل الموقع أو الكاميرا. هذا مختبر تفويض قدرات، وليس درساً في CORS أو cookies.
يمكن صياغة الفكرة ضمن مشاريع تخرج أمن تطبيقات الويب، مع ميزات اختبار غير حساسة وأصول محلية.
ابدأ بميزة وأصل محددين
تعرّف مواصفة W3C Permissions Policy آلية تتيح للصفحة التحكم في استخدام ميزات وواجهات متصفح. اختر ميزة واحدة في البداية، ودوّن الأصل الذي يستضيف الصفحة وكل iframe. لا تختبر «الأمان» ككتلة عامة؛ حدد مثلاً أن إطار الخرائط التجريبي يحتاج الموقع بعد تفاعل صريح، بينما إطار المقالات لا يحتاج أي ميزة حساسة. اجعل طلب الإذن يطلقه زر ضمن الإطار الاختباري حتى يمكن فصل السياسة عن سلوك المتصفح الذي يتطلب تفاعلاً.
هناك أكثر من طبقة إعداد: ترويسة استجابة من الصفحة الحاضنة، وسمات الإطار المضمن، وقواعد المتصفح والإذن الذي يختاره المستخدم. تشرح MDN دليل Permissions Policy كيف تتفاعل الترويسة مع ميزات الصفحة وإطاراتها. لا تفسر رسالة رفض واحدة على أنها دليل أي طبقة منعت الطلب؛ اجمع الحالة الفعلية من واجهات السياسة وسجل الشبكة وإعدادات الاختبار.
أنشئ مصفوفة أصول صغيرة
شغل الصفحة الحاضنة على https://host.test والإطار الأول على الأصل نفسه، والثاني على https://tool.test، والثالث على https://untrusted.test. استخدم خوادم محلية بأسماء اختبار مضبوطة، لا مواقع عامة. أنشئ لكل iframe معرفاً في الواجهة، وسجل أصله وميزة الطلب ونتيجته. إذا كانت كل الإطارات من أصل واحد فلن تختبر قواعد التفويض بين الأصول، وإذا كانت أسماء النطاقات غير مضبوطة فقد تخلط قيود secure context بمشكلة السياسة.
افحص أن السمة allow تطابق الميزة المطلوبة، وأن الترويسة لا تمنح الأصل العام صلاحية غير مقصودة. ابدأ بحالة افتراضية مقيدة، ثم أضف السماح لإطار واحد. لا تضف قائمة ميزات واسعة لمجرد أن أداة الاختبار لا تعمل؛ افتح ميزة واحدة في كل تغيير حتى يتضح السبب.
راقب ما يحدث عند الوراثة والتضمين
يحمل إطار HTML المضمن سياقاً يحدد ما يمكن تفويضه إليه. معيار HTML يصف خصائص عنصر iframe، فيما تحدد سياسة الأذونات كيف تضيق أو توسع الميزات في سياقات المستند. راجع قسم iframe في معيار HTML عند تحديد السمة وعلاقات التضمين. جرّب إطاراً داخل إطار ثانٍ إذا كان هذا جزءاً من السؤال، لأن التفويض عبر مستويين قد يكشف خطأ لا يظهر في المثال المسطح.
سجل من أي مستند صدر طلب الميزة، وهل كانت السياسة تسمح به، وهل ظهر حوار إذن للمستخدم. هذه نتائج مختلفة. قد تسمح السياسة للميزة دون أن يمنح المستخدم الإذن، وقد يكون سياق الصفحة غير صالح للميزة. لا تقم بإخفاء هذه الأسباب تحت عمود واحد عنوانه «فشل».
مثال سياسة قابلة للاختبار
اجعل الصفحة تمنع الموقع افتراضياً، ثم تسمح به لإطار tool.test فقط. في الإطار الثاني، يعرض زر «جرّب طلب الموقع» نتيجة عامة مثل «تم السماح بالطلب» أو «حُجب»، من دون إظهار إحداثيات حقيقية. في إطار untrusted.test نفذ الطلب نفسه وتوقع منعه على مستوى السياسة. أعد الاختبار بعد إزالة سمة السماح ثم بعد حذف الترويسة؛ يجب أن تتغير الحالة بالطريقة التي تتوقعها المصفوفة. الأصول والنتائج هنا أمثلة محلية وليست اختباراً لخدمات فعلية.
لا تسجل أي موقع أو صورة من كاميرا. إذا كانت الميزة نفسها تحتاج إذناً، استخدم محاكاة أو بيئة معزولة وقيم غير حساسة. الهدف إثبات قرار السماح والمنع، لا جمع بيانات.
اختبارات وحدود الاستنتاج
اختبر الأصل المسموح، أصلاً غير معروف، إطاراً بلا سمة allow، إطاراً متداخلاً، تغيير الترويسة، ورفض المستخدم للإذن. تحقق من أن ظهور الأداة لا يعد نجاحاً للميزة، وأن رفض الميزة لا يمنع بقية الصفحة من العمل. راقب المتصفح في أكثر من محرك إذا أمكن، وسجل نسخة كل واحد. يمكن أن تختلف الميزات المدعومة وآليات كشف السياسة، لذلك تجنب كتابة نتيجة نهائية مثل «المتصفحات آمنة» من تجربتين.
إذا ظهر خطأ، افحص origin وميزة السياسة وسياق الصفحة والإذن، ثم أعد حالة واحدة بعد كل تغيير. لا تعالج فشل الميزة بإضافة * إلى قائمة السماح؛ ذلك يخفي المشكلة ويوسع التفويض. لا تخلط النتائج مع CORS: نجاح تحميل مورد أو فشله لا يحدد وحده إمكان استدعاء API من إطار.
تسليم مشروع تخرج واضح
يضم التقرير مخطط الأصول، جدول السياسة المتوقعة والفعلية، ترويسات الاستجابة، سمات الإطارات، المتصفحات، وحالات الإذن. ترتبط الفكرة بـمشاريع التخرج وتطوير تطبيقات الويب. يستطيع الفريق قراءة مختبر تخزين نتائج CORS preflight للمقارنة بين نوعي السياسات؛ هناك تُضبط مشاركة الموارد بين الأصول عبر HTTP، وهنا يحدد التفويض ميزات متصفح في سياق المستند. وجود سياسة في كل موضوع لا يجعل المشكلتين متطابقتين.
حدود المختبر أنه لا يثبت خلو تطبيق حقيقي من كل سوء استخدام، ولا يدرس عيوب المكتبة المضمنة نفسها. السياسة طبقة تقليل صلاحيات، وليست بديلاً عن مراجعة الشيفرة أو قرار الإذن. احتفظ بالنتائج بوصفها دليلاً على حالات محددة يمكن إعادة تشغيلها، واذكر بوضوح الميزات التي لم تختبر.
المصادر
مراجعة المصادر: .
اختبار المثال وحدوده
الأصول والميزات في الجدول اختبار محلي؛ لا يطلب الموقع إذناً أو يلتقط بيانات فعلية.
مقالات ذات صلة
الخدمة المرتبطة: تطوير المواقع والتطبيقات والأنظمة المخصصة.
أرسل متطلبات مشروعك