القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. اقرأ أكثر.

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

إذن ما هو العبث من جانب العميل؟ كيف يمكنك مكافحة ذلك للحفاظ على أمان مواقعك ومستخدميك؟

ما هو العبث من جانب العميل؟

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

  • اسم الملف المرفوع.
  • نوع محتوى الملف الذي تم تحميله.

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

instagram viewer

امتداد الملف والقائمة البيضاء

أثناء تطوير وحدات تحميل الملفات ، فإن أول شيء يجب فعله هو عملية القائمة البيضاء لملحق الملف. على سبيل المثال ، يريد المستخدم تحميل ملف باسم "muo.jpeg". يجب عليك التأكد من أن امتداد الملف الذي يريد المستخدم تحميله هو .jpeg. لهذا ، يجب على النظام التحقق من الملف الذي تم تحميله ومعرفة ما إذا كان أحد امتدادات الملفات المسموح بها. لفهم كيفية القيام بذلك ، قم بفحص كود PHP البسيط التالي:

$ file_parts = pathinfo (اسم الملف $) ؛
يُحوّل($ file_parts ['extension'])
{
قضية "jpg":
استراحة;

قضية "مضرب": // أو exe ، dll ، so ، إلخ.
استراحة;

قضية "":
قضيةباطل: // لا يوجد امتداد الملف
استراحة;
}

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

احذر من إنشاء بيانات امتداد الملف عن طريق تحليل اسم الملف وفقًا لحرف النقطة (.) ، لأن المهاجم يمكنه تجاوز خطوة التحقق هذه باسم ملف مثل "muo.jpeg.php".

ما هي معلومات نوع المحتوى؟

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

لنفترض أنك تقوم بتشفير آلية للتحقق من امتداد الملف بشكل صحيح ، ولا تقبل سوى الملفات ذات الامتداد .jpeg. بالإضافة إلى هذه الآلية الاحترازية ، يمكنك التحقق من معلومات نوع المحتوى فقط حالة وقبول الملفات التي تحتوي على معلومات image / jpeg فقط ، وهو مستوى إضافي من الحماية ضد ملفات هجوم المقهى

ملفات فلاش SWF وخطوات الهجوم

لا يعني امتداد الملف وبيانات نوع المحتوى شيئًا لمتصفحات الإنترنت التي تدعم المكونات الإضافية مثل Adobe Flash Player. على الرغم من أن دعم هذا المشغل لم يعد متاحًا ، إلا أنه لا يزال من الممكن تثبيت تلك الملفات ذات الصلة على العديد من الأنظمة ، على الرغم من أن الفلاش لا يزال يمثل خطرًا أمنيًا. في نظام لم يتخذ الاحتياطات ذات الصلة ، من الممكن استدعاء ملف Flash بامتداد بصرف النظر عن امتدادها. سيؤدي هذا إلى مشكلة أمنية خطيرة أخرى.

من أجل اتخاذ إجراء ، يحتاج المطورون إلى معرفة المسارات التي يمكن لمجرمي الإنترنت اتخاذها. إليك كيف يمكن أن يحدث ذلك:

  1. يقوم المهاجم الضار بتحميل SWF (تنسيق ملف Adobe Flash) باسم "image.jpeg" إلى موقع الويب المستهدف. أثناء عملية التحميل ، يتم التأكيد في عملية التحقق من القائمة البيضاء على أن الملف الذي تم تحميله بواسطة المهاجم له امتداد .jpeg. يتم تجاوز التحقق من نوع المحتوى من خلال العبث من جانب العميل. تخيل أن هذا الملف ، الذي تم تحميله بواسطة ممثل التهديد ، ينتقل إلى "www (dot) target-site (dot) com / images / images.jpeg".
  2. لنفترض أن المهاجم لديه موقع ويب يسمى attacker (dot) com. يستدعي المهاجم ملف image.jpeg الذي تم تحميله إلى الموقع المستهدف على هذا الموقع باستخدام امتداد علامة مع تعيين نوع application / x-shockwave-flash.
  3. يقوم مستخدم بريء بتسجيل الدخول إلى موقع المهاجم (دوت) كوم. يستدعي هذا الموقع ملف SWF على www (dot) target-site (dot) com / images / image.jpeg وينفذ الأوامر المعطاة إلى SWF.
  4. من خلال هذا ، يمكن للمهاجم الإلكتروني إنشاء إجراءات طلب HTTP لعنوان الموقع المستهدف (دوت) com دون ملاحظة المستخدمين العاديين. مع هذه الطلبات ، سيستخدم المهاجم جلسة المستخدم البريء والتجاوز فحص CSRF.

لفهم سيناريو الهجوم هذا بشكل أكثر وضوحًا ، ضع في اعتبارك أن الكود التالي موجود في HTML المحتوى المرسل إلى المستخدم من قبل المهاجم (نقطة) كوم:

النمط ="الارتفاع: 1 بكسل ؛ العرض: 1 بكسل ؛" البيانات ="www.target-site.com/images/image.jpeg" اكتب ="التطبيق / x-shockwave-flash" allowcriptaccess ="دائماً" فلاشفارس ="ج = قراءة&u = شيء ما"

أحد أفضل الحلول هو الوصول إلى الملفات التي تم تحميلها مع تحميل الملف عبر مجال فرعي مختلف. في السيناريو المذكور أعلاه ، يمكنك الوصول إلى الملفات الثابتة ليس من نفس المجال ، ولكن من نطاق فرعي مختلف على النحو التالي: "http (نقطتان) // file.target-site (dot) com / images / image.jpeg".

حل آخر هو إضافة ترتيب المحتوى: مرفق معلومات لاستجابة HTTP عندما تتلقى طلبًا للوصول إلى الملفات التي تريد تحميلها.

اتخذ الاحتياطات اللازمة لمواجهة ثغرات تحميل الملفات

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

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