প্রতিটি ওয়েবসাইটের জন্য প্রয়োজনীয় সিকিউরিটি হেডার

Security2026-09-19TryQuickToolBox

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

এই গাইডে, আমরা প্রতিটি ওয়েবসাইটের পাঠানো উচিত প্রয়োজনীয় সিকিউরিটি হেডার নিয়ে আলোচনা করব, প্রতিটি কী করে তা ব্যাখ্যা করব, এবং কীভাবে সঠিকভাবে কনফিগার করবেন তা দেখাব।

সিকিউরিটি হেডার কেন গুরুত্বপূর্ণ

সিকিউরিটি হেডার প্রথম প্রতিরক্ষা স্তর কারণ তারা ব্রাউজার-স্তরের নীতি প্রয়োগ করে যা আপনি নিয়ন্ত্রণ করেন। তারা ইনপুট ভ্যালিডেশন বা সুরক্ষিত অথেন্টিকেশন প্রতিস্থাপন করে না, কিন্তু আক্রমণ পৃষ্ঠতল উল্লেখযোগ্যভাবে হ্রাস করে। উদাহরণস্বরূপ, একটি কঠোর Content-Security-Policy একটি ইনজেক্ট করা স্ক্রিপ্টকে কার্যকর হওয়া থেকে থামাতে পারে, এমনকি যদি একজন আক্রমণকারী একটি XSS ত্রুটি খুঁজে পায়।

প্রধান ব্রাউজারগুলো ধারাবাহিকভাবে এই হেডারগুলো সমর্থন করে, এবং সেগুলো যোগ করা সাধারণত কয়েক লাইনের কনফিগারেশন। সেগুলো ব্যবহার না করার তেমন কোনো কারণ নেই।

প্রয়োজনীয় সিকিউরিটি হেডার

নিচে সেই হেডারগুলো দেওয়া হলো যা প্রতিটি প্রোডাকশন ওয়েবসাইটের পাঠানো উচিত। আমরা সেগুলো কী করে, প্রস্তাবিত মান, এবং সাধারণ সমস্যাগুলো নিয়ে আলোচনা করব।

১. Content-Security-Policy (CSP)

CSP হলো XSS এবং ডেটা ইনজেকশন প্রশমিত করার জন্য সবচেয়ে শক্তিশালী হেডার। এটি সীমাবদ্ধ করে ব্রাউজার কোন সোর্স থেকে স্ক্রিপ্ট, স্টাইল, ইমেজ এবং অন্যান্য রিসোর্স লোড করতে পারে। একটি ভালো শুরুর পলিসি দেখতে এমন হতে পারে:

Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https://images.example.com; object-src 'none'; base-uri 'self'; form-action 'self';

default-src 'self' দিয়ে শুরু করুন এবং প্রয়োজন অনুযায়ী ধীরে ধীরে ব্যতিক্রম যোগ করুন। সম্ভব হলে স্ক্রিপ্টের জন্য 'unsafe-inline' এড়িয়ে চলুন; পরিবর্তে নন্স বা হ্যাশ ব্যবহার করুন। পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন কারণ একটি ভুল কনফিগার করা CSP আপনার সাইট ভেঙে দিতে পারে।

২. HTTP Strict Transport Security (HSTS)

HSTS ব্রাউজারকে আপনার ডোমেইনে সমস্ত ভবিষ্যতের অনুরোধের জন্য HTTPS ব্যবহার করতে বাধ্য করে। এটি প্রোটোকল ডাউনগ্রেড আক্রমণ এবং কুকি হাইজ্যাকিং প্রতিরোধ করে। একটি সাধারণ হেডার:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

max-age সেকেন্ডে (এক বছর)। includeSubDomains সমস্ত সাবডোমেইনে পলিসি প্রয়োগ করে। preload আপনার ডোমেইনকে ব্রাউজার প্রিলোড তালিকায় যোগ করার অনুমতি দেয়, কিন্তু শুধুমাত্র তখনই ব্যবহার করুন যদি আপনি সম্পূর্ণ নিশ্চিত হন যে সমস্ত সাবডোমেইন HTTPS সমর্থন করে।

৩. X-Frame-Options

এই হেডার আপনার সাইটকে একটি iframe-এ এমবেড করা থেকে বিরত রাখে, যা ক্লিকজ্যাকিং আক্রমণ থামায়। ব্যবহার করুন:

X-Frame-Options: DENY

অথবা SAMEORIGIN যদি আপনার নিজের কনটেন্ট ফ্রেম করতে হয়। আধুনিক ব্রাউজারগুলো CSP-তে frame-ancestors ডিরেক্টিভও সমর্থন করে, যা আরও নমনীয়। যদি আপনি CSP ব্যবহার করেন, তাহলে X-Frame-Options বাদ দিতে পারেন, কিন্তু উভয়ই অন্তর্ভুক্ত করা আরও ভালো সামঞ্জস্য প্রদান করে।

৪. X-Content-Type-Options

এই হেডার ব্রাউজারকে ঘোষিত Content-Type থেকে দূরে একটি রেসপন্স MIME-স্নিফিং করা থেকে বিরত রাখে। এটি সহজ এবং কার্যকর:

X-Content-Type-Options: nosniff

এটি ছাড়া, একটি ক্ষতিকারক ফাইল executable স্ক্রিপ্ট হিসেবে ব্যাখ্যা করা হতে পারে। সর্বদা এটি সেট করুন।

৫. Referrer-Policy

Referrer-Policy নিয়ন্ত্রণ করে অনুরোধের সাথে কতটা রেফারার তথ্য পাঠানো হয়। একটি সুষম ডিফল্ট:

Referrer-Policy: strict-origin-when-cross-origin

এটি same-origin অনুরোধের জন্য সম্পূর্ণ URL পাঠায় এবং cross-origin অনুরোধের জন্য শুধুমাত্র origin পাঠায়। এটি অ্যানালিটিক্স সংরক্ষণ করে সংবেদনশীল পাথ তথ্যের লিক হ্রাস করে।

৬. Permissions-Policy

পূর্বে Feature-Policy, এই হেডার আপনাকে জিওলোকেশন, ক্যামেরা এবং মাইক্রোফোনের মতো ব্রাউজার ফিচার সক্রিয় বা নিষ্ক্রিয় করার অনুমতি দেয়। উদাহরণ:

Permissions-Policy: geolocation=(), camera=(), microphone=()

অব্যবহৃত ফিচার নিষ্ক্রিয় করা আপস করা থার্ড-পার্টি স্ক্রিপ্টের প্রভাব হ্রাস করে।

সিকিউরিটি হেডারের তুলনা

হেডারউদ্দেশ্যপ্রস্তাবিত মান
Content-Security-PolicyXSS এবং ডেটা ইনজেকশন প্রশমিত করাdefault-src 'self'; script-src 'self' ...
Strict-Transport-SecurityHTTPS প্রয়োগ করাmax-age=31536000; includeSubDomains
X-Frame-Optionsক্লিকজ্যাকিং প্রতিরোধ করাDENY বা SAMEORIGIN
X-Content-Type-OptionsMIME স্নিফিং বন্ধ করাnosniff
Referrer-Policyরেফারার লিক নিয়ন্ত্রণ করাstrict-origin-when-cross-origin
Permissions-Policyব্রাউজার ফিচার সীমাবদ্ধ করাgeolocation=(), camera=()

সিকিউরিটি হেডার কীভাবে যোগ করবেন

পদ্ধতি আপনার ওয়েব সার্ভার বা ফ্রেমওয়ার্কের উপর নির্ভর করে। এখানে সাধারণ পদ্ধতিগুলো দেওয়া হলো।

Nginx

আপনার সার্ভার ব্লকে হেডার যোগ করুন:

add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https://images.example.com; object-src 'none'; base-uri 'self'; form-action 'self';" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), camera=(), microphone=()" always;

always প্যারামিটার নিশ্চিত করে যে ত্রুটি প্রতিক্রিয়াতেও হেডার পাঠানো হয়।

Apache

mod_headers সক্রিয় করুন এবং যোগ করুন:

Header always set Content-Security-Policy "default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https://images.example.com; object-src 'none'; base-uri 'self'; form-action 'self';"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Frame-Options "DENY"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "geolocation=(), camera=(), microphone=()"

Node.js (Express)

helmet মিডলওয়্যার ব্যবহার করুন, যা ডিফল্টভাবে অনেক হেডার সেট করে:

const helmet = require('helmet');
app.use(helmet());
// Customize CSP if needed
app.use(helmet.contentSecurityPolicy({
  directives: {
    defaultSrc: ["'self'"],
    scriptSrc: ["'self'", "https://trusted.cdn.com"],
    styleSrc: ["'self'", "'unsafe-inline'"],
    imgSrc: ["'self'", "data:", "https://images.example.com"],
    objectSrc: ["'none'"],
    baseUri: ["'self'"],
    formAction: ["'self'"],
  }
}));

Helmet ডিফল্টভাবে X-Content-Type-Options এবং Referrer-Policy-এর মতো অন্যান্য হেডারও সেট করে।

আপনার হেডার পরীক্ষা করা

ডিপ্লয়মেন্টের পরে, ব্রাউজার ডেভেলপার টুল (Network ট্যাব) বা SecurityHeaders.com-এর মতো অনলাইন স্ক্যানার ব্যবহার করে আপনার হেডার যাচাই করুন। পরীক্ষা করুন যে:

আপনার সাইট বিকশিত হওয়ার সাথে সাথে নিয়মিত আপনার পলিসি পর্যালোচনা এবং আপডেট করুন।

সাধারণ জিজ্ঞাসা

সবচেয়ে গুরুত্বপূর্ণ সিকিউরিটি হেডার কোনটি?

Content-Security-Policy প্রায়ই সবচেয়ে গুরুত্বপূর্ণ হিসেবে বিবেচিত হয় কারণ এটি সরাসরি XSS এবং ডেটা ইনজেকশন আক্রমণ প্রশমিত করে, যা সবচেয়ে সাধারণ ওয়েব দুর্বলতাগুলোর মধ্যে অন্যতম।

সিকিউরিটি হেডার কি অন্যান্য নিরাপত্তা ব্যবস্থা প্রতিস্থাপন করতে পারে?

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

সিকিউরিটি হেডার যোগ করলে কি আমার ওয়েবসাইট ভেঙে যাবে?

যদি ভুল কনফিগার করা হয়, বিশেষ করে CSP, তাহলে তারা বৈধ রিসোর্স ব্লক করতে পারে। সর্বদা একটি স্টেজিং এনভায়রনমেন্টে পরীক্ষা করুন এবং প্রোডাকশনে ডিপ্লয় করার আগে ভায়োলেশনের জন্য ব্রাউজার কনসোল মনিটর করুন।

আপনার সাইট সুরক্ষিত করতে প্রস্তুত? উপরের হেডারগুলো যোগ করে শুরু করুন, তারপর আপনার ব্রাউজারের ডেভেলপার টুল দিয়ে পরীক্ষা করুন। আপনার সিকিউরিটি স্ক্যানার থেকে JSON রেসপন্স দ্রুত পরিদর্শন এবং ফরম্যাট করার জন্য, আমাদের JSON Formatter ব্যবহার করে দেখুন।