تقنية

سياسة صفحة يشرحها المساعد: هل default-src يقيد إرسال النموذج؟

رسم توضيحي: بطاقة أ: default-src فقط؛ form-action غائب؛ بطاقة ب: form-action none؛ قيد إرسال صريح
مخطط من إعداد بحر العلوم. قراءة توجيهين؛ لا نتيجة إرسال أو شهادة حماية

لا ينتقل قيد default-src تلقائيا إلى وجهة إرسال النموذج عبر form-action. قد يقرأ المساعد سياسة قصيرة ثم يكتب أن جميع الوجهات ممنوعة، متجاهلا علاقة الاستعاضة التي يحددها المصدر. نراجع هذا السؤال المحدد في CSP، أي سياسة أمن المحتوى، ببطاقتين تعليميتين دون إعداد صفحة أو إرسال بيانات.

الخلاصة السريعة

لا؛ لا يستخدم form-action قيد default-src بديلا عند غيابه، وفق MDN. [1] غياب هذا القيد ليس دليلا على نجاح الإرسال أو مأمونيته.

  • يقيد form-action عناوين وجهات إرسال النماذج، ولا يرث default-src عند غيابه. [1] لا نوسع اسم القيد إلى كل فعل في الصفحة.
  • بطاقة أ تذكر default-src فقط، وبطاقة ب تضيف form-action؛ الفرق هو وجود قيد مستقل، لا تجربة إرسال ناجحة أو فاشلة.
  • القيمة none بين علامتي اقتباس مفردتين تمنع إرسال النماذج حسب وصف MDN. [1] نقرأ النص المعلن دون إعلان إعداد نافذ.
  • ينبه المصدر إلى اختلاف تطبيق المتصفحات في إعادة التوجيه بعد الإرسال. [1] لا نعمم حكم الوجهة الأولى على سلسلة تحويلات، ولم نختبر متصفحا.

أي فعل يصفه هذا القيد؟

تصف MDN توجيه form-action بأنه قيد لعناوين وجهات إرسال النماذج، وتصرح بأن default-src ليس بديلا عنه عند غيابه. [1]

نحدد الفعل أولا: وجهة إرسال النموذج. كلمة «المحتوى» في اسم السياسة لا تجعل كل بند قاعدة واحدة تشمل جميع العلاقات. عندما يشرح المساعد نصا ناقصا، يسمي البند الموجود والبند الغائب بدلا من ملء الفراغ بقيد تخيله.

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

ما الفرق بين بطاقتين؟

نؤلف بطاقة أ تكتب default-src بالقيمة none، دون أي form-action. ونؤلف بطاقة ب تكرر النص نفسه ثم تضيف form-action بالقيمة none. الكلمات بين علامتي الاقتباس هنا أسماء قيم في وصفنا، وليست إعدادات طبقناها.

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

نفصل إذن قراءة القاعدة عن نتيجة التنفيذ. لو لم تقدم مادة السياسة كاملة، يذكر الملخص هذا النقص ولا يجعل بطاقتنا نسخة منها.

بطاقة مؤلفةform-action موجود؟ما تصفه المقارنة
ألالا ننسب قيده إلى default-src
بنعم؛ noneقيد إرسال مذكور صراحة

كيف نقرأ القيمة الصريحة؟

يفيد المصدر بأن form-action مع none المقتبسة بعلامتين مفردتين لا يسمح بإرسال النماذج. [1]

لذلك نكتب أن ب تصف هذا القيد. لا نكتب «أرسلنا الطلب ورفضه الخادم»، فليس في الورقة نموذج أو خادم أو رد. القرار الذي تفسره السياسة وواقعة رد الخدمة مستويان مختلفان.

إذا نقل المساعد وصفا من لقطة جزئية، يحتاج التأكد من القيمة كما وردت؛ لا يبدلها بمصدر آخر أو يضيف قائمة وجهات متخيلة لتبدو السياسة مكتملة.

أين ينتهي هذا الشرح؟

تنبه MDN إلى أن تطبيق حظر إعادة التوجيه بعد الإرسال يختلف بين المتصفحات. [1]

نحصر بطاقتينا في وصف التوجيه ووجهة الإرسال الأولى، ولا نستنتج منهما حكما موحدا لسلسلة تحويلات. إذا كان السؤال عن تلك السلسلة، نحتاج مادتها وبيئتها بدلا من نقل نتيجة لم نجربها.

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

المصادر ومتابعة القراءة

  1. MDN: CSP form-action (يفتح في نافذة جديدة)developer.mozilla.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.