شرح MIME Sniffing ومخاطره والحماية منه .

1337r00tمنذ 4 سنوات

* السلام عليكم ورحمة الله وبركاته *

------------------

الحمد لله على جميع نِعمه علينا ما علمنا منها وما لم نعلم حمداً والصلاة والسلام على نبينا محمد اشرف الخلق والمرسلين, اما بعد :-

https://1337r00t.me

--------------------

# مقدمة :-

عندما نفتح موقع ألكتروني يقوم المتصفح بتحميل assets التي من ضمنها الصور وملفات css و javascript الخ..

<script src="http://1337r00t.me/test.js"></script>
<link rel="stylesheet" href="http://1337r00t.me/test.css">
<img src="http://1337r00t.me/test.jpg">

وهذا طبيعي ونراه جميعنا لكن السؤال هو :-

- كيف يتعرف المتصفح على نوع الملف (MIME Type) هل هو صورة png (image/png) او json (application/json) الخ.. من بقية الأنواع ؟

الجواب : عن طريق MIME Sniffing او يعرفه عندما يقرأ قيمة Content-Type Header .

لكن المشكلة هي أن المتصفح يقرر نوع الملف دائما مايختاره MIME Sniffing له أما Content-Type مسكين رأيه غير مسموع (وجودك مثل عدمك) وهنا الكارثه .

 

-------------------

# ماهو MIME Sniffing وخطورته :-

هي تقنية تستخدمها المتصفحات المشهورة عندما يقوم المتصفح بتحميل assets تقوم MIME Sniffing بالتعرف على نوع الملف بواسطه "تحليل الملف (بنفسه بدون تدخل المطور او المستخدم)" ويقرر هو نوع الملف حتى مع وجود Content-Type, لكن هل تشم رائحة Attack هنا ؟ نعم يوجد لو نفترض ان المطور وضع قيمة Content-Type هي image/png لموقع ما لنقل موقع طرف ثالث لكن للأسف المطور معتقد ان المتصفح سيفهم ان الملف "صورة" بناء على Content-Type header وتحدث الكارثة لأن يستطيع المخترق وضع ملف ملغوم ويصيب الموقع بثغرات مثل XSSI وقد يستخدم المخترق سيناريو آخر وهو هجوم Rosetta Flash .

------------------

# الحماية من هذه المشكلة :-

تنحل هذه المشكلة فقط بأضافة Response Header اسمه X-Content-Type-Options والحل بوضع قيمة هذا response header هي nosniff مما يعني يتوقف عن عملية تحليل الملف و يخبر السيرفر المتصفح بأن يعتمد فقط على قيمة Content-Type في تحديد نوع الملف :-

X-Content-Type-Options: nosniff

----------------

# مصادر للأستزادة :-

 

------------------

هنا نصل الى نهاية موضوعنا، أتمنى الشرح مفهوم للجميع 3>

كلمات دليلية: mime sniffing
3
إعجاب
3873
مشاهدات
0
مشاركة
2
متابع

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !