كيف تحلل إعدادات JSON الديناميكية بأمان في React
2025-04-03
بيانات الـ CMS والـ feature flags مفيدة لكنها غير موثوقة افتراضيًا. إهمال التحقق قد يحوّل JSON إلى نقطة ضعف في التطبيق.
نموذج التهديد
احمِ التطبيق من مفاتيح __proto__، وامنع eval، ولا تعرض HTML خامًا من JSON مباشرة.
المسار الآمن
fetch -> JSON.parse -> تحقق zod/Schema -> تحويل إلى props مع قيم افتراضية.
const ConfigSchema = z.object({ theme: z.enum(["light", "dark"]) });
const config = ConfigSchema.parse(JSON.parse(raw));التخزين المحلي
تحقق أيضًا من JSON في localStorage، واستخدم version لتسهيل ترحيلات المخطط.
TypeScript
الأنواع الساكنة لا تكفي مع بيانات خارجية؛ التحقق وقت التشغيل يظل إلزاميًا.