Security header checklist: HSTS, CSP, frame সুরক্ষা ও আরও

কয়েকটি response header পুরো এক শ্রেণির আক্রমণ বন্ধ করে। সেট করার সংক্ষিপ্ত তালিকা, প্রতিটির কাজ ও পরীক্ষার উপায় দেখুন।

header নামের একটি checklist

HTTP security header browser-কে আপনার পেজে বাড়তি সুরক্ষা প্রয়োগ করতে বলে। খরচ কম, আর অনেক সাধারণ আক্রমণ আটকায়। এগুলো আপনার web server, CDN বা অ্যাপে সেট করুন।

অপরিহার্য header

১. Strict-Transport-Security (HSTS)। Browser-কে একটি সময় পর্যন্ত আপনার সাইটে শুধু HTTPS ব্যবহার করতে বলে।

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

ছোট max-age দিয়ে শুরু করুন, সব subdomain-এ HTTPS ঠিক আছে কি না দেখুন, তারপর বাড়ান। preload শুধু নিশ্চিত হলে দিন, কারণ ফেরানো কঠিন।

২. Content-Security-Policy (CSP)। Script, style, ছবি ও frame কোথা থেকে লোড হবে তা সীমিত করে এবং inline script আটকাতে পারে। XSS-এর বিরুদ্ধে সবচেয়ে শক্ত প্রতিরক্ষা। আগে Content-Security-Policy-Report-Only দিয়ে চালু করুন, report ঠিক করুন, তারপর enforce করুন। nonce-ভিত্তিক script পছন্দ করুন।

৩. X-Content-Type-Options: nosniff। Browser-কে ফাইলের ধরন আন্দাজ করতে দেয় না, যা কিছু content-sniffing আক্রমণ ঠেকায়, বিশেষত upload-এ।

৪. Clickjacking সুরক্ষা: frame-ancestors। Clickjacking আপনার পেজকে অন্য সাইটে অদৃশ্য frame-এ লুকিয়ে ক্লিক ভোলায়।

Content-Security-Policy: frame-ancestors 'self'

পুরোনো X-Frame-Options: DENY (বা SAMEORIGIN) একই কাজ করে এবং fallback হিসেবে এখনও ব্যাপক ব্যবহৃত।

৫. Referrer-Policy। অন্য সাইটে URL-এর কতটা পাঠানো হবে তা নিয়ন্ত্রণ করে। ভালো ডিফল্ট: strict-origin-when-cross-origin।

৬. Permissions-Policy। যে browser feature ব্যবহার করেন না তা বন্ধ করে (camera, microphone, geolocation)। যেমন: camera=(), microphone=(), geolocation=()।

৭. Cross-origin isolation header (Cross-Origin-Opener-Policy, Cross-Origin-Resource-Policy, Cross-Origin-Embedder-Policy)। আপনার পেজকে অন্য origin থেকে আলাদা রাখতে কাজের; সাইট cross-origin popup বা embed-এর ওপর নির্ভর না করলে সেট করুন, আর সাবধানে পরীক্ষা করুন।

  • Secure: শুধু HTTPS-এ পাঠানো।
  • HttpOnly: JavaScript থেকে লুকানো।
  • SameSite=Lax (বা Strict): cross-site পাঠানো সীমিত (CSRF-এ সাহায্য)।
  • session cookie-তে __Host- prefix ভাবুন।

যে header সরাবেন

বিস্তারিত server ও framework সংস্করণের header (Server, X-Powered-By) লুকান। এটি নিজে প্রতিরক্ষা নয়, তবে তথ্য ফাঁস এড়ায়।

কীভাবে পরীক্ষা করবেন

  • Browser developer tools-এর Network ট্যাবে response header দেখুন।
  • curl -I https://yoursite ব্যবহার করুন।
  • Mozilla Observatory বা securityheaders.com-এর মতো অনলাইন scanner চালান।
  • বদলের পর সমস্যা ধরতে CSP report দেখুন।

কোথায় সেট করবেন

সব response-এর জন্য CDN বা reverse proxy-তে (Nginx, Cloudflare rule), অথবা অ্যাপের middleware-এ। static ফাইল ও error পেজের কথাও মনে রাখুন।

মূল কথা: HSTS, Content Security Policy, nosniff, frame-ancestors, Referrer-Policy ও নিরাপদ cookie flag সেট করুন, তারপর scanner দিয়ে পরীক্ষা করুন।


ওয়েব সিকিউরিটি সিরিজ, পর্ব ২ (আরও bug শ্রেণি ও hardening): 6 নম্বর (মোট 6)। আগের লেখা: XXE: XML external entity আক্রমণ ও বন্ধ করার উপায়.

আরও পড়ুন

XXE: XML external entity আক্রমণ ও বন্ধ করার উপায়

XML-এর একটি feature ডকুমেন্টকে বাইরের কনটেন্ট টেনে আনতে দেয়। আপনার parser অনুমতি দিলে আক্রমণকারী এটি ব্যবহার করতে পারে। সমাধান একটি parser সেটিং।

ওয়েব সিকিউরিটি•২ মিনিটে পড়া

নিরাপদ file upload: কী যাচাই করবেন ও কোথায় রাখবেন

File upload সবচেয়ে ঝুঁকিপূর্ণ feature-গুলোর একটি। সতর্ক ডিজাইন একে সাধারণ গুরুতর bug থেকে নিরাপদ feature বানায়।

ওয়েব সিকিউরিটি•২ মিনিটে পড়া