الخلاصة

  • يعرّف RFC 9535 تنفيذ استعلام JSONPath على قيمة JSON محددة وإرجاع قائمة من صفر أو أكثر من العقد؛ ولكل عقدة مسار معياري واحد داخل تلك القيمة.
  • قد يشير $['approvals'][3] بدقة إلى الموافقة الرابعة الآن، ثم يشير إلى موافقة أخرى بعد إدراج عنصر في أول المصفوفة. فرادة الموقع لا تعني دوام الهوية.
  • القائمة الفارغة وقيمة JSON null والاختيار المكرر والفهرس الخارج عن النطاق حالات مختلفة. القرار المهم يحتاج إلى سجل يجمع المدخل والاستعلام والتنفيذ والنتيجة والسياسة.

رقم المقعد لا يصبح هوية المسافر لمجرد أنه واضح.

عند التاسعة يشير $['approvals'][3] إلى موافقة شخص بعينه. وبعد خمس دقائق تُدرج معاملة أقدم في بداية المصفوفة. لم يتغير الاستعلام، وبقي صحيحاً وأعاد عقدة واحدة، لكن صاحب الموقع تغيّر. وإذا احتفظ النظام بالمسار وحده فلن يستطيع إثبات ما رآه عند التاسعة.

لا يخالف ذلك RFC 9535. فالوثيقة، المنشورة على مسار معايير IETF في فبراير 2024، تحدد أن الاستعلام يُنفذ على قيمة JSON واحدة تسمى وسيطة الاستعلام، فينتج قائمة عقد. والعقدة تجمع القيمة وموقعها في ذلك المدخل. يوحّد المعيار آلية الاختيار، ولا يمنح الوثيقة أصالة ولا الحقل معنىً تجارياً.

الصيغة المعيارية تثبت إحداثية

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

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

يحدد JSON Pointer في RFC 6901 موقع قيمة في بنية معروفة أيضاً، ويمكن تحويل المسار المعياري إليه. تغير الصيغة لا يصنع استمرارية تاريخية.

النتيجة الفارغة لا تشرح سببها

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

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

تبقى العقد المختارة أكثر من مرة مكررة في القائمة. وتحسب count() العقد، لا القيم أو الكيانات الفريدة. وحيث يسمح المعيار بأكثر من ترتيب قد تُرجع عمليتان ترتيبين مختلفين وكلاهما صحيح. لذلك فإن «اختر الأول» قاعدة للتطبيق، لا حقيقة من JSONPath، ما لم يحدد عقد خارجي الترتيب.

الاتفاق على الاختيار لا يثبت سلطة البيانات

يعرّف RFC 8259 JSON ويحذر من تكرار أسماء الأعضاء، ويضيّق RFC 7493 التباين عبر I-JSON. ويوحد RFC 9485 التعابير المستخدمة في match() وsearch(). ويسجل سجل IANA الامتدادات، بينما يعرّف application/jsonpath وثائق الاستعلام.

تساعد هذه الاتفاقات نظامين على اختيار العقد نفسها من مدخل منضبط. لكنها لا تثبت أن حقل owner يمثل المالك القانوني، ولا أن البيانات حديثة أو مصدرها مخوّل. ويقدم RFC 9537 مثالاً واضحاً: يحدد JSONPath موضع حقل محجوب في استجابة RDAP، لكنه لا يكشف القيمة ولا يثبت شرعية سياسة الحجب.

يبدأ الأمن قبل علامة الدولار

يحذر RFC 9535 من تمرير أجزاء الاستعلام إلى eval في لغة المضيف. ويجب التحقق من الأسماء والفهارس والقيم المدرجة وترميزها. كما قد يستهلك البحث التكراري الساذج معالجاً مفرطاً أو ينهك المكدس. الصياغة الصحيحة تحتاج إلى موارد محدودة وحالات فشل منفصلة.

يساعد UTF-8 في RFC 3629 واعتبارات نموذج البيانات في RFC 8949 على ضبط التمثيل، لا المصدر. وسلسلة الإثبات الكاملة تصل بايتات المصدر بالقيمة المحللة والاستعلام والتنفيذ والامتدادات وقائمة العقد والتفسير والقرار.

إيصال يمكن إعادة تشغيله

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

يثبت ذلك أن التنفيذ X نفذ Q على مدخل بصمته H تحت الحدود L وأعاد هذه المواقع. أما القول بأنه سجل الأمس نفسه فيحتاج إلى معرّف ثابت في المخطط ودليل يصل بين النسخ.

المصادر والحدود

يشمل السجل الرسمي HTML والنص وصفحة المعلومات وDatatracker والتاريخ وبحث الأخطاء. ويوثق مستودع فريق العمل التطوير، فيما يبين مشروع المقارنة خلفية اختلاف التطبيقات.

وتشمل المراجع RFC 8259 و7493 و9485 و6901 و8949 و3629 و9537، إضافة إلى سجل IANA ونوع الوسائط. ويستند منظور الحوكمة إلى مقالات Heng Lu عن طبقات الواقع والسلطة الرمزية والحد الأدنى للمواصفة الأولية وأولوية الشيفرة العاملة.

لم يُفحص تنفيذ أو مؤسسة أو هجوم أو حادثة بعينها. ولا يزعم المقال وجود خلل في RFC 9535 أو سوء استخدام من جهة محددة.