Defaults.Exposed

Defaults.Exposedসমাধান › MIME-স্নিফিং সুরক্ষা (X-Content-Type-Options)

MIME-স্নিফিং সুরক্ষা (X-Content-Type-Options) ঠিক করার উপায়

একটি এক-লাইনের হেডার যা ব্রাউজারকে একটি ফাইল আসলে কী তা অনুমান করা থেকে বিরত রাখে। এটি ছাড়া, কেউ আপনার সাইটে যে ফাইল আপলোড করে — বা আপনার নিজের পৃষ্ঠায় একটি ফাইল — ব্রাউজার দ্বারা ভুলভাবে পড়া যেতে পারে এবং কোড হিসেবে চালানো যেতে পারে, যা ঠিক এভাবে কিছু আক্রমণ একটি নিরীহ-দেখানো আপলোডকে আপনার গ্রাহকদের সেশন চুরি করার উপায়ে পরিণত করে।

আপনার ব্যবসার জন্য মূল বিষয়: এই হেডারটি হারানো একটি স্পষ্ট, স্ক্যানযোগ্য চিহ্ন যে মৌলিক বিষয়গুলি লক ডাউন করা হয়নি। নিজে থেকে এটি খুব কমই একটি সাইট নামিয়ে দেয়, কিন্তু একটি ফাইল-আপলোড ফর্ম বা ব্যবহারকারী-তৈরি বিষয়বস্তুর সাথে মিলিত হলে এটি আক্রমণকারীদের জন্য আপনার দর্শনার্থীদের ব্রাউজারে দুর্ভাগ্যজনক কোড চালানোর একটি পথ খুলে দেয়। এটি নিরাপত্তায় সবচেয়ে সস্তা সংশোধনগুলির মধ্যে একটি: এক লাইন, বিনামূল্যে, প্রায় পাঁচ মিনিট।

এটি আপনার কতটা খরচ করতে পারে

কেন এটি গুরুত্বপূর্ণ। ব্রাউজারগুলি, যখন একটি সার্ভার একটি ফাইল কী তা সম্পর্কে অস্পষ্ট থাকে, তখন বিষয়বস্তুর ধরন অনুমান ('স্নিফ') করার চেষ্টা করবে। আক্রমণকারীরা সেই অনুমানকে কাজে লাগায়: একটি ফাইল আপলোড করুন যা সার্ভার সৎভাবে একটি নিরীহ ছবি হিসেবে লেবেল করে, কিন্তু এর বিষয়বস্তু এমনভাবে তৈরি করে যে ব্রাউজার, অনুমান করে, সিদ্ধান্ত নেয় এটি আসলে JavaScript — এবং তারপর এটি চালায়। `X-Content-Type-Options: nosniff` হেডার প্রতিটি ব্রাউজারকে অনুমান করা বন্ধ করতে এবং সার্ভারের বলা ধরনে বিশ্বাস করতে বলে।

মালিকের জন্য সংক্ষিপ্ত সংস্করণ

প্রতিটি ওয়েব ব্রাউজারে তৈরি একটি শান্ত ধারণা আছে: যখন এটি আপনার সাইট থেকে একটি ফাইল ডাউনলোড করে, তখন এটি বের করার চেষ্টা করে কী ধরনের ফাইল এটি। সাধারণত এটি আপনার সার্ভারকে বিশ্বাস করে। কিন্তু সার্ভার অস্পষ্ট হলে, ব্রাউজার অনুমান করবে — এবং সেই অনুমানকে MIME-স্নিফিং বলা হয়।

সমস্যা হলো আক্রমণকারীরা অনুমান নিয়ে খেলতে পারে। তারা এমন একটি ফাইল তৈরি করতে পারে যা আপনার সার্ভার সৎভাবে বিশ্বাস করে একটি নিরীহ ছবি, কিন্তু যা ব্রাউজার, অনুমান করতে ছেড়ে দিলে, সিদ্ধান্ত নেয় এটি আসলে প্রোগ্রাম কোডের একটি অংশ — এবং তারপর এটি চালায়, আপনার গ্রাহকের ব্রাউজারে সরাসরি, আপনার ডোমেইনে।

একটি এক-লাইন নির্দেশ আছে যা অনুমানটি বন্ধ করে: X-Content-Type-Options: nosniff। এটি প্রতিটি ব্রাউজারকে বলে, “অনুমান করো না — আমার সার্ভার যা বলে ঠিক তাই বিশ্বাস করো।” এটাই সম্পূর্ণ সংশোধন। এটি বিনামূল্যে, প্রায় পাঁচ মিনিট লাগে, এবং একটি সঠিকভাবে তৈরি সাইটে কিছু ভাঙে না।

কীভাবে ঠিক করবেন (বিনামূল্যে, ~৫ মিনিট)

আপনার ওয়েবসাইট পরিচালনাকারীকে এই বিভাগটি হস্তান্তর করুন। ঠিক করা বিনামূল্যে এবং দ্রুত।

Cloudflare (বা একটি অনুরূপ CDN/প্রক্সি):

Nginx:

add_header X-Content-Type-Options "nosniff" always;

Apache:

Header always set X-Content-Type-Options "nosniff"

IIS / Windows হোস্টিংweb.config-এ <system.webServer>-এ:

<httpProtocol>
  <customHeaders>
    <add name="X-Content-Type-Options" value="nosniff" />
  </customHeaders>
</httpProtocol>

Node / Express:

app.use((req, res, next) => {
  res.setHeader('X-Content-Type-Options', 'nosniff');
  next();
});

(বা helmet প্যাকেজ ব্যবহার করুন, যা এটি এবং অন্যান্য বেশ কয়েকটি নিরাপত্তা হেডার ডিফল্টরূপে সেট করে।)

ডেপ্লয় করার পরে, যাচাই করুন।

সাধারণ ভুল

আপনার IT ব্যক্তিকে এটি দিন

প্রযুক্তিগত সারসংক্ষেপ: এই চেক HTTP রেসপন্স হেডার পরীক্ষা করে এবং পাস হয় যখন X-Content-Type-Options উপস্থিত এবং এর (কেস-অসংবেদনশীল) মান nosniff ধারণ করে — মাল্টি-সোর্স nosniff, nosniff কেস সহ যেখানে CDN এবং উৎপত্তি উভয় এটি সেট করে। এটি একটি স্কোর করা P2 চেক যা ২৫ পয়েন্ট মূল্যের, ব্যর্থ হলে মধ্যম তীব্রতা হিসেবে গ্রেড করা, এবং OWASP Top 10 A05 (Security Misconfiguration)-এ ম্যাপ করে।

FAQ

আমরা কাউকে ফাইল আপলোড করতে দিই না। আমাদের কি এখনো এটি দরকার?

হ্যাঁ, এবং এটি এখনো করার যোগ্য। হেডারটি গভীরতার-প্রতিরক্ষা: এটি আপনার নিজের সাইট থেকে পরিবেশিত স্ক্রিপ্ট, স্টাইলশিট এবং ডেটা ফাইলগুলি ব্রাউজার দ্বারা ভুল-পাঠ করা থেকেও বিরত রাখে।

এটি যোগ করা কি আমাদের ওয়েবসাইটে কিছু ভাঙবে?

প্রায় কখনো না। nosniff কেবল ব্রাউজারকে আপনার সার্ভার ইতিমধ্যে পাঠানো বিষয়বস্তুর ধরনকে সম্মান করতে বলে।

'ভালো' আসলে কেমন দেখায়?

প্রতিটি পৃষ্ঠা এবং সম্পদে একটি একক রেসপন্স হেডার: X-Content-Type-Options: nosniff।

আমাদের CDN (Cloudflare বা অনুরূপ) এবং আমাদের সার্ভার উভয়ই এটি যোগ করে — এটি কি সমস্যা?

না। মান দুইবার দেখা ('nosniff, nosniff') কারণ CDN এবং উৎপত্তি উভয় এটি সেট করে সম্পূর্ণ ঠিক এবং এখনো পাস।

এটি ঠিক করতে কি অর্থ খরচ হয়?

না। ঠিক করা আপনার ওয়েব সার্ভার বা CDN-এ একটি বিনামূল্যের কনফিগারেশন পরিবর্তন।

এটি একটি Content Security Policy (CSP) থেকে কীভাবে আলাদা?

তারা পরিপূরক। CSP কোন স্ক্রিপ্ট এবং রিসোর্স লোড করার অনুমতি আছে তা নিয়ন্ত্রণ করে; nosniff ব্রাউজারকে এটি লোড করা একটি ফাইল ভুল-শ্রেণীবদ্ধ করা থেকে বিরত রাখে।