كيف تحلل إعدادات 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

الأنواع الساكنة لا تكفي مع بيانات خارجية؛ التحقق وقت التشغيل يظل إلزاميًا.