ماذا يعني تهريب JSON
يُحوّل تهريب JSON سلسلة نصية خام (أو مستند JSON مُسلسَل) لتتمكن من تضمينها بأمان داخل قيمة سلسلة JSON أخرى. في JSON، يجب تهريب أحرف معينة بشرطة مائلة عكسية: علامات الاقتباس المزدوجة (\") والشرطات المائلة العكسية (\\\\) وأحرف التحكم مثل فواصل الأسطر (\n) والإرجاع (\r) والجدولة (\t) وغيرها.
حالة الاستخدام الكلاسيكية هي تضمين مستند JSON كقيمة سلسلة داخل مستند JSON آخر — نمط شائع في حمولات API التي تنقل كتل إعدادات خام أو أجسام webhook أو استجابات مُسلسَلة.
فك التهريب هو العكس: أخذ سلسلة JSON مُهرَّبة (بتسلسلات شرطة مائلة عكسية) وإعادتها إلى شكلها الأصلي المقروء. يُفيد عند استلام استجابة API يحتوي فيها حقل على حمولة JSON مُحوَّلة إلى سلسلة تريد فحصها.
تسلسلات التهريب المُعالَجة
تتعامل الأداة مع جميع الأحرف التي تشترط مواصفة JSON تهريبها داخل قيم السلاسل: علامة الاقتباس المزدوجة (→ \\")، والشرطة المائلة العكسية (→ \\\\\\\\)، وأحرف التحكم — الرجوع للخلف (\\b) وتغذية الصفحة (\\f) وسطر جديد (\\n) والإرجاع (\\r) والجدولة الأفقية (\\t)، وأي حرف تحكم آخر بنقطة كود أقل من U+0020.
تُمثَّل أحرف Unicode خارج المستوى متعدد اللغات الأساسي (نقاط كود أعلى من U+FFFF) كأزواج بديلة في JSON. تتعامل الأداة مع هذه الأزواج البديلة بشكل صحيح لأحرف الإيموجي والنصوص التكميلية.
الشرطة المائلة الأمامية (/) اختيارية تقنياً في التهريب ضمن JSON. بعض المُسلسِلات تُهرّبها (بشكل خاص json_encode لـ PHP افتراضياً)، والبعض الآخر لا. أداتنا تُهرّبها افتراضياً لأقصى توافق.
حالات الاستخدام الشائعة
تضمين JSON في HTML: عند إخراج متغير JSON في صفحة HTML، يجب تهريب JSON لأن أحرف </script> وعلامات الاقتباس المفردة والأقواس الزاوية لا تتداخل مع مُحلِّل HTML. تهريب JSON قبل تضمينه في HTML خطوة ذات صلة بالأمان — JSON غير مُهرَّب في HTML قد يُفضي إلى ثغرات XSS.
متغيرات البيئة: تخزين كائن إعدادات JSON في متغير بيئة غالباً ما يتطلب أن يكون JSON سلسلة مُهرَّبة في سطر واحد، لأن معظم مُحلِّلي متغيرات البيئة لا يدعمون القيم متعددة الأسطر.
أعمدة السلاسل في قواعد البيانات: تخزين JSON في عمود TEXT أو VARCHAR عادي أحياناً يتطلب التهريب لمنع علامات الاقتباس المزدوجة الخاصة بـ JSON من التعارض مع محدد السلاسل في SQL.