কনটেন্ট সিকিউরিটি পলিসি (CSP): স্ট্রিক্ট নন্স কনফিগারেশন ও এক্সএসএস প্রতিরক্ষা

এক নজরে টেকনিক্যাল সারসংক্ষেপ (Quick Technical Summary): মূল ধারণা: ক্রিপ্টোগ্রাফিক নন্স (nonce) ভিত্তিক কড়া সিএসপি রুলস ইনলাইন স্ক্রিপ্ট ও অনুমোদনহীন এক্সটার্নাল স্ক্রিপ্ট ব্লক করে এক্সএসএস আক্রমণকে সম্পূর্ণ।

কনটেন্ট সিকিউরিটি পলিসি (CSP): স্ট্রিক্ট নন্স কনফিগারেশন ও এক্সএসএস প্রতিরক্ষা

[!TIP] এক নজরে টেকনিক্যাল সারসংক্ষেপ (Quick Technical Summary):

  • মূল ধারণা: ক্রিপ্টোগ্রাফিক নন্স (nonce) ভিত্তিক কড়া সিএসপি রুলস ইনলাইন স্ক্রিপ্ট ও অনুমোদনহীন এক্সটার্নাল স্ক্রিপ্ট ব্লক করে এক্সএসএস আক্রমণকে সম্পূর্ণ অকার্যকর করে দেয়।
  • প্রতিরোধের উপায়: কঠোর ইনপুট ভ্যালিডেশন নিশ্চিত করা, অপ্রয়োজনীয় শেল/ইভাল বন্ধ রাখা এবং সর্বনিম্ন অধিকার নীতি মেনে চলা।
  • ভেরিফিকেশন: অ্যাপ্লিকেশন লগ নিয়মিত মনিটর করা এবং স্বয়ংক্রিয় রিগ্রেশন টেস্ট রান করা।

আধুনিক সফটওয়্যার ইঞ্জিনিয়ারিংয়ে সিকিউরিটি নিশ্চিত করতে কোড এবং আর্কিটেকচার উভয় স্তরেই সতর্ক থাকা অত্যন্ত জরুরি।

ক্যারিয়ারের অগ্রগতির পাশাপাশি ডেভেলপারদের আন্তর্জাতিক ক্যারিয়ার গাইডলাইন জানতে পড়ে দেখতে পারেন বাংলাদেশি ডেভেলপারদের জন্য হাই-পেয়িং রিমোট জব গাইড।

টেকনিক্যাল বিশ্লেষণ এবং মূল কারণ

যখন ব্যবহারকারীর কাছ থেকে পাওয়া ইনপুট যাচাই ছাড়া সরাসরি সার্ভারের ইন্টারনাল রিসোর্স বা অপারেটিং সিস্টেমে যায়, তখন এই সিকিউরিটি ঝুঁকি তৈরি হয়:

Client Input ===> Web Handler ===> [Unvalidated Parameter] ===> Internal Resource / OS / Network

নিরাপদ আর্কিটেকচার নিশ্চিত করতে নিচের টেস্টেড রেফারেন্স কোডটি অনুসরণ করুন:

# Nginx HTTP Header for Strict Nonce-Based CSP
add_header Content-Security-Policy "default-src 'self'; script-src 'nonce-$request_id' 'strict-dynamic'; object-src 'none'; base-uri 'none';" always;

ডিফেন্সিভ কোডিং চেকলিস্ট

১. ইনপুট নরমালাইজেশন: পাথ বা ইউআরএল যাচাই করার পূর্বে ইনপুটকে অবশ্যই নরমালাইজ করে নিন। ২. হোয়াইটলিস্ট চেকিং: ব্লকলিস্টের ওপর নির্ভর না করে শুধু অনুমোদিত ক্যারেক্টার বা ডোমেনের হোয়াইটলিস্ট ব্যবহার করুন। ৩. শেল এক্সিকিউশন পরিহার: শেলের মাধ্যমে কমান্ড না চালিয়ে সরাসরি বাইনারি এক্সিকিউট করুন। ৪. লিস্ট প্রিভিলেজ (Least Privilege): কন্টেইনার এবং সার্ভিসগুলোকে নন-রুট ইউজার হিসেবে রান করুন।

সাধারণ ভুল ধারণা যা এড়িয়ে চলা উচিত

  • শুধুমাত্র ডাব্লুএএফ (WAF)-এর ওপর নির্ভর করা এবং সোর্স কোডের বাগ ঠিক না করা।
  • ডাবল-এনকোডিং বা ইউনিকোড টেকনিকের মাধ্যমে সহজ রেজেক্স ফিল্টার বাইপাস করা সম্ভব তা ভুলে যাওয়া।

লগ মনিটরিং ও অ্যালার্টিং

ওয়েব সার্ভার ও অ্যাক্সেস লগে কোনো সন্দেহজনক এনকোডেড প্যারামিটার বা অস্বাভাবিক এরর কোড (যেমন ঘনঘন 403 Forbidden) এলে তাৎক্ষণিক অ্যালার্ট সেট করুন।

উপসংহার

নেটওয়ার্ক, রানটাইম এবং অ্যাপ্লিকেশন কোড—প্রতিটি স্তরেই ডিফেন্স-ইন-ডেপথ নিশ্চিত করুন।

আরও পড়ুন

Spring Boot ও জাভা অ্যাপ্লিকেশনে কমান্ড ইনজেকশন প্রতিরোধের সেরা উপায়

এক নজরে টেকনিক্যাল সারসংক্ষেপ (Quick Technical Summary): মূল ধারণা: Runtime.getRuntime().exec() এ স্ট্রিং যোগ করে কমান্ড চালাবেন না।

Security•২ মিনিটে পড়া

কমান্ড ইনজেকশন কী: অপারেটিং সিস্টেম কমান্ড এক্সিকিউশন ও সুরক্ষার উপায়

ইউজার ইনপুট সরাসরি সিস্টেম শেলে (sh, bash) চলে গেলে কমান্ড ইনজেকশন ঘটে। শেলের বদলে আর্গুমেন্ট অ্যারে ব্যবহারকারী execFile চালানোই এর স্থায়ী সমাধান।

Vulnerabilities•২ মিনিটে পড়া

পাথ ট্রাভার্সাল কী: ডট-ডট-স্ল্যাশ ভালনারেবিলিটি কীভাবে কাজ করে ও প্রতিরোধের উপায়

এক নজরে টেকনিক্যাল সারসংক্ষেপ (Quick Technical Summary): মূল ধারণা: পাথ ট্রাভার্সাল হলো এমন একটি ত্রুটি যার মাধ্যমে আক্রমণকারী ../ সিকোয়েন্স ব্যবহার করে সার্ভারের গোপন ফাইল পড়ে ফেলতে পারে।

Vulnerabilities•২ মিনিটে পড়া