في هذا الفصل سنلقي نظرة على بعض الهجوم الشائع وكيف يكون نموذج موقع لوحة الإعلانات عرضة للخطر وكيفية إصلاحه لمنع ذلك الهجوم أول نقطة ضعف سننظر إليها هو البرمجة النصية عبر المواقع تذكر أن البرمجة النصية عبر المواقع هي ثغرة أمنية تحدث ذلك عندما نأخذ مدخلات من مستخدم واحد ونعرضها على مستخدم آخر لماذا هذه ثغرة؟ تذكر أن ما يرسله الخادم إلى المستخدم يتم عرضه كصفحة HTML يمكن أن تتضمن صفحة HTML جافا سكريبت وهو ترميز يتم تنفيذه على المتصفح لا نريد من المتسللين وضع ترميز على موقعنا حيث يتم تنفيذه في متصفحات المستخدمين الآخرين موقع لوحة الإعلانات له مكانان حيث نأخذ مدخلات من مستخدم واحد ونعرضها على المستخدمين الآخرين واحد في ملفات تعريف المستخدمين والآخر في منشورات لوحة الإعلانات سننظر بشكل خاص في ملفات تعريف المستخدمين لذلك هنا، عندما يكون لدينا منشورات حديثة يمكننا النقر فوق ملف تعريف المستخدم على اسم المستخدم لرؤية ملفهم التعريفي وسنرى ملف التعريف لجون الآن، إذا أراد جون تعديل ملف التعريف الخاص به أنا مسجّل الدخول حاليًا باعتباري جون يمكنني النقر فوق تحرير ملف التعريف وبعد ذلك يمكنهم تغيير نص "حول" الخاص بهم وتغيير صورتهم الشخصية لاختبار لمعرفة ما إذا كان مجال معين عرضة للبرمجة النصية عبر المواقع علينا فقط إدخال ترميز HTML به على سبيل المثال لنجعل هذا الجزء الأخير عريض إذا كنا عرضة للبرمجة النصية عبر المواقع إذا لم نكن عرضة للبرمجة النصية عبر المواقع ثم سنرى الإشارة الفعلية قوية سنعود ونعرض ملف التعريف لجون يمكننا أن نرى أن هذه الجملة بخط عريض بالفعل لا نرى الإشارات يتم تفسير الإشارات على أنها ترميز HTML هذا يعني أن هذا المجال بالذات عرضة للبرمجة النصية عبر المواقع لنلق نظرة على مثال آخر تذكر أن HTML يمكن أن يتضمن ترميز جافا سكريبت نظرًا لأنه عرضة للبرمجة النصية عبر المواقع سيتم تنفيذ هذه البرمجة النصية عندما يعرض المستخدم ملف التعريف لجون لذلك تم تنفيذ البرمجة النصية هذه وعرضت تنبيه الآن أصبح التنبيه حميدًا إلى حد ما ولكن من الممكن أن يكون أي ترميز جافا سكريبت موجود بالفعل وكان سيتم تنفيذه لذا فإن البرمجة النصية عبر المواقع تسمح للقراصنة بوضع ترميز في موقعك سيتم تنفيذه على متصفحات المستخدمين الآخرين كيف يمكننا إصلاح ذلك؟ حسنًا، الفكرة الأساسية هي أنه يتعين علينا معالجة المخرجات واستبدال بعض الأحرف الرئيسية بمكافئات HTML على سبيل المثال نستبدل أقل من بعلامة < نحن نستبدل علامة أكبر من علامة مماثلة كيان HTML الآن علينا أن نفعل ذلك مع كل حرف على حدة هذا خاص بـ HTML هذا يجب أن يتم مع أي إخراج نرسله إلى متصفح المستخدم يتضمن مدخلات مستخدم آخر ومن السهل حقًا أن تفوتك الأماكن لذا فإن أفضل طريقة لحل هذا هو استخدام نظام القوالب نظام القوالب هو في الأساس لغة مصغرة نستخدمها لبناء صفحات الويب الخاصة بنا اسمح لي أن أوضح لك نظام القوالب المستخدم في هذا الموقع بالذات لذلك نحن نستخدم نظام قالب Twig يمكنك أن ترى ذلك، على سبيل المثال لدينا عنوان هناك يقول الملف الشخصي الخاص بـ ثم في أقواس مزدوجة متعرجة يوجد person.name هذا يأخذ محتويات متغير يسمى الشخص أخذ حقل فيه يسمى الاسم ثم يقوم بالإخراج إلى متصفح الويب سوف تحميك أنظمة القوالب بشكل افتراضي من البرمجة النصية عبر المواقع في الواقع، كان عليّ أن أخبر نظام القوالب هذا على وجه التحديد ألا تحميني حتى نتمكن من رؤية الثغرات نحن ننظر إلى الأسفل حيث نخرج نص "حول" أضفت في العلم الخام هناك لإخبار نظام القوالب لا تحميني من البرمجة النصية عبر المواقع لذا اسمح لي بإزالة هذا العلم الخام ثم أقوم بالحفظ ثم أقوم بتحديث الملف التعريف هذا حتى الآن يمكنك أن ترى ما أراه ترميز جافا سكريبت الفعلي الذي أدخلوه بالموقع لا يتم تنفيذه نظام القوالب هو أفضل طريقة لك للحماية من البرمجة النصية عبر المواقع لأنه سيحميك تلقائيًا في كل مرة تقوم بإخراج شيء ما إلى متصفح الويب لا داعي للقلق بشأن ترك شيء ما أثناء عملية الفلترة الخاصة بك هناك ثغرة أخرى في البرمجة النصية عبر المواقع في موقع لوحة الإعلانات تذكر ما تحدثنا عنه عندما تحدثنا عن المدخلات والمخرجات وما هي الإجراءات التي قد تكون عرضة للخطر سأتركها كتمرين لك للعثور عليها وإصلاحها شكراً للمشاهدة في الدرس التالي سننظر في التلاعب بعنوان URL خدعة شائعة جدًا يستخدمها المتسللون للوصول إلى مناطق لا ينبغي أن يكونوا قادرين على الوصول لها