شرح المفهوم
"أساسيات وقت تشغيل JavaScript: الأمان والموثوقية" يركز على العادات الدفاعية التي تمنع السكربتات الصغيرة من التعطل بطرق غير متوقعة. في هذه المرحلة، ليس الهدف تغطية كل موضوع أمني، بل تعلم كيفية التعامل مع المدخلات الخطرة، والفشل بأناقة، وتجنب الثقة بالبيانات قبل التحقق منها. ستعمل مع مثال تحليل (parsing)، وسترى كيف يمكن لقيمة سيئة أن تعطل سير العمل، ثم ستعدّل الكود بحيث يصبح الفشل أسهل في الفهم والتعافي منه. يبني هذا الدرس عادة كتابة JavaScript التي تكون هادئة تحت المدخلات السيئة بدلاً من أن تكون هشة.
أين تضع الكود
- ابدأ بالمتغيرات والمدخلات. استخدم صيغة المتصفح أو Node.js بوضوح.
- أضف منطق المعالجة في القسم الأوسط.
- اختتم بالإخراج والتحقق السريع.
مرجع الأوامر
- شغّل المثال بمدخلات صالحة أولاً، ثم بمدخلات غير صالحة، وقارن مسارات الإخراج.
- اشرح لماذا يجعل التقاط الخطأ السكربت أكثر موثوقية للمستخدمين الحقيقيين.
- أضف فحص أمان إضافيًا بعد التحليل حتى لا يفترض الكود وجود كل حقل.
- أعد كتابة رسالة واحدة لتسهيل فهم الفشل على مطور آخر أثناء التصحيح.
دليل خطوة بخطوة
- شغّل الدالة باستخدام سلسلة JSON النصية الصالحة وتأكد من طباعة القيمة المتوقعة.
- شغّلها مرة أخرى باستخدام JSON غير صالح ولاحظ كيفية التعامل مع الخطأ.
- أضف فحصًا إضافيًا لخاصية مفقودة بحيث يبقى السكربت آمنًا حتى بعد نجاح التحليل.
- قارن الإصدارين قبل وبعد لترى أيهما يقدم ملاحظات أوضح أثناء الفشل.
- اختتم بملاحظة قصيرة تصف كيف يحمي الكود نفسه من المدخلات السيئة.
تمارين تطبيقية
- أنشئ دالة مساعدة (helper) تقرأ سلسلة JSON نصية وتُرجع كائنًا افتراضيًا عند فشل التحليل.
- أضف فحصًا يحذر عند فقدان حقل مطلوب مثل `theme` أو `language`.
- اكتب مثالًا ثانيًا يتحقق من صحة المدخلات قبل أن تصل إلى خطوة التحليل.
تحديات برمجية
- حوّل مقتطف قراءة JSON الهش إلى أداة مساعدة أكثر أمانًا تُرجع دائمًا نتيجة متوقعة.
- صمم إصدارًا يفصل أخطاء التحليل عن أخطاء الحقول المفقودة لتسهيل عملية التصحيح (debugging).
مهام تمرين صغيرة
- أضف قيمة احتياطية واحدة.
- حسّن رسالة خطأ واحدة.
- اكتب سطرًا واحدًا يشرح نوع المدخلات السيئة التي يمكن لهذا الكود الآن التعامل معها.
خطأ شائع
Skipping input validation or mixing logic/output in one unstructured block.
تحدٍ مصغّر من الواقع
Build a small real-life example for this lesson topic using 3 clear steps: input, process, output.