0%
معالجة النماذج والتحقق من صحة البيانات

النماذج

استقبال بيانات من مجهول دون الوثوق به.

15-20 دقيقة

معالجة النماذج والتحقق من صحة البيانات

النموذج هو المكان الوحيد في تطبيق الويب الذي يكتب فيه شخص مجهول مباشرة داخل نظامك. وكل ما يخرج منه موضع شك: حقل مطلوب فارغ، أو عمر سالب، أو عنوان بريد إلكتروني مختلق، أو اسم من ألفي حرف، أو وسم <script> داخل تعليق، أو قيمة مرسلة من عميل ليس صفحتك.

الصعوبة لا تكمن في قراءة المعاملات، فـ getParameter تكفي لذلك. إنها تكمن في ثلاث مشكلات تتجاوزها الدروس السطحية عن طيب خاطر.

الأولى هي الترميز. يُدخل الزائر «Genève» فتحفظ أنت «Genève». لا يظهر الخلل إلا مع الحروف المشكّلة، فلا يظهر أبدًا في مجموعات الاختبار الإنجليزية، ولا يوجد علاجه حيث نبحث عنه: لا في الصفحة ولا في قاعدة البيانات، بل في مرشِّح يُطبَّق على الطلب قبل أي قراءة.

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

الثالثة هي الثقة. لا شيء يضمن أن الطلب صادر من نموذجك. يستطيع موقع خارجي نشر صفحة ترسل طلب POST إلى عنوان حذف الحساب لديك، وسيُرفق متصفح الزائر المتصل ملف تعريف ارتباط الجلسة من تلقاء نفسه. يسمى هذا الهجوم تزوير الطلبات عبر المواقع (CSRF)، والرمز المضاد لإعادة الإرسال هو ما يوقفه.

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!