Content Security Policy (CSP) হল একটি নিরাপত্তা বৈশিষ্ট্য যা ওয়েব পেজগুলোর মাধ্যমে এক্সটার্নাল রিসোর্স লোডিং এবং স্ক্রিপ্ট এক্সিকিউশনের উপর নিয়ন্ত্রণ আরোপ করে। CSP এর মাধ্যমে, ওয়েব পেজে কোন ধরনের কনটেন্ট লোড করা যাবে এবং কোন ধরনের স্ক্রিপ্ট বা স্টাইল এক্সিকিউট করা যাবে তা নির্ধারণ করা হয়। এটি সাইটে Cross-Site Scripting (XSS), Clickjacking, Data Injection, ইত্যাদি আক্রমণ প্রতিরোধ করতে সাহায্য করে।
CSP কনফিগার করার মাধ্যমে আপনি নির্দিষ্ট করতে পারেন কোন সোর্স থেকে স্ক্রিপ্ট, ইমেজ, স্টাইল, ফন্ট, ভিডিও ইত্যাদি লোড করা যাবে এবং কোন সোর্স থেকে তা লোড করা যাবে না।
CSP Header সেটআপ
CSP কনফিগার করতে HTTP header অথবা meta tag ব্যবহার করা যায়। তবে, HTTP header ব্যবহার করাই সবচেয়ে নিরাপদ এবং শক্তিশালী পদ্ধতি।
১. CSP Header:
CSP header সেট করার জন্য, আপনি একটি Content-Security-Policy header যুক্ত করবেন আপনার ওয়েব সার্ভারের রেসপন্সে। এই header-এ আপনি একাধিক কনটেন্ট সোর্স বা পলিসি নির্ধারণ করতে পারেন।
Content-Security-Policy: policy_directive
policy_directive-এ আপনি নির্দিষ্ট করবেন কোন কনটেন্ট সোর্স অনুমোদিত হবে এবং কোনগুলো হবে না। কিছু সাধারণ পলিসি নির্দেশিকা:
- default-src: সব ধরনের কনটেন্ট সোর্সের জন্য ডিফল্ট সোর্স।
- script-src: স্ক্রিপ্ট সোর্স নির্ধারণ করে।
- style-src: স্টাইল সোর্স নির্ধারণ করে।
- img-src: ইমেজ সোর্স নির্ধারণ করে।
- font-src: ফন্ট সোর্স নির্ধারণ করে।
- connect-src: AJAX এবং WebSocket সম্পর্কিত সোর্স নির্ধারণ করে।
- object-src: প্লাগিন বা অবজেক্ট সোর্স নির্ধারণ করে।
২. উদাহরণ CSP Header:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' https://images.example.com; connect-src 'self' https://api.example.com;
এই উদাহরণে:
- default-src 'self': ওয়েব পেজটি কেবলমাত্র নিজের ডোমেইন থেকে কনটেন্ট লোড করতে পারবে।
- script-src 'self' https://trusted.cdn.com: স্ক্রিপ্ট কেবলমাত্র নিজস্ব ডোমেইন এবং নির্দিষ্ট CDN থেকে লোড করা যাবে।
- style-src 'self' 'unsafe-inline': স্টাইল কেবলমাত্র নিজের ডোমেইন থেকে এবং ইনলাইন স্টাইল (যেমন
<style>ট্যাগে লেখা) অনুমোদিত। - img-src 'self' https://images.example.com: ইমেজ কেবলমাত্র নিজস্ব ডোমেইন এবং নির্দিষ্ট ডোমেইন থেকে লোড করা যাবে।
- connect-src 'self' https://api.example.com: AJAX কল এবং WebSocket কেবলমাত্র নিজের ডোমেইন এবং নির্দিষ্ট API থেকে করা যাবে।
৩. CSP Meta Tag:
CSP কনফিগার করার জন্য আপনি HTML ডকুমেন্টে <meta> ট্যাগও ব্যবহার করতে পারেন। তবে, এটি শুধুমাত্র কিছু সীমাবদ্ধ কনটেন্ট সোর্সের জন্য কার্যকরী।
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
এটি ওয়েব পেজের <head> সেকশনে স্থাপন করতে হবে এবং এখানে default-src এর মাধ্যমে কেবলমাত্র নিজস্ব সোর্স অনুমোদিত।
৪. CSP Policy Directives ব্যাখ্যা
কিছু গুরুত্বপূর্ণ CSP Policy Directives নিম্নরূপ:
- default-src: যদি অন্য কোন সোর্স নির্দেশিকা উল্লেখ না থাকে, তবে এটি ডিফল্ট সোর্স হিসেবে ব্যবহার হবে।
- script-src: স্ক্রিপ্ট সোর্সের জন্য ব্যবহৃত। এটি স্ক্রিপ্ট লোডিং নিয়ন্ত্রণ করে।
- style-src: CSS স্টাইল শিট সোর্সের জন্য ব্যবহৃত।
- img-src: ইমেজ সোর্সের জন্য ব্যবহৃত।
- font-src: ফন্ট সোর্সের জন্য ব্যবহৃত।
- connect-src: AJAX কল, WebSockets, এবং অন্যান্য ইন্টারঅ্যাক্টিভ কানেকশন নিয়ন্ত্রণ করে।
- object-src:
<object>,<embed>, এবং<applet>ট্যাগের সোর্স নিয়ন্ত্রণ করে। - media-src: অডিও এবং ভিডিও সোর্স নিয়ন্ত্রণ করে।
- child-src:
<frame>,<iframe>,<object>,<embed>,<applet>এর সোর্স নিয়ন্ত্রণ করে।
৫. CSP কনফিগার করার জন্য টুলস
CSP সঠিকভাবে কনফিগার করা কঠিন হতে পারে, বিশেষ করে যখন আপনি বিভিন্ন সোর্স বা সাইট ব্যবহার করেন। তবে, CSP সেটআপে সাহায্য করার জন্য কিছু টুলস এবং রিসোর্স আছে:
- CSP Evaluator: গুগল কর্তৃক প্রদত্ত একটি টুল যা CSP হেডারের নিরাপত্তা পরীক্ষা করতে সহায়ক।
- Report URI: CSP রিপোর্টিং সিস্টেম যা CSP পলিসি থেকে সিকিউরিটি সমস্যা শনাক্ত করতে সহায়ক।
- CSP Generator: CSP হেডার জেনারেট করার একটি টুল যা আপনাকে কাস্টম পলিসি তৈরি করতে সাহায্য করবে।
৬. CSP রিপোর্টিং
CSP অ্যাটাক বা ত্রুটি ট্র্যাক করার জন্য report-uri বা report-to ডিরেকটিভ ব্যবহার করতে পারেন। এর মাধ্যমে আপনি রিপোর্ট পাঠাতে পারবেন যদি কোনো কনটেন্ট নীতির বিরুদ্ধে কিছু লোড করার চেষ্টা করা হয়।
উদাহরণ:
Content-Security-Policy: default-src 'self'; report-uri /csp-violation-report-endpoint;
এটি পলিসি লঙ্ঘন হলে /csp-violation-report-endpoint URL এ রিপোর্ট পাঠাবে।
৭. CSP এর উদাহরণ:
Content-Security-Policy: default-src 'self'; script-src 'self' 'https://cdn.example.com'; style-src 'self' 'unsafe-inline'; img-src 'self' 'https://images.example.com'; connect-src 'self' https://api.example.com; font-src 'self' https://fonts.googleapis.com;
এখানে:
- default-src 'self': সমস্ত কনটেন্ট কেবলমাত্র নিজের ডোমেইন থেকে আসবে।
- script-src 'self' 'https://cdn.example.com': স্ক্রিপ্ট কেবল নিজস্ব ডোমেইন এবং নির্দিষ্ট CDN থেকে লোড হবে।
- style-src 'self' 'unsafe-inline': স্টাইল শিট কেবল নিজস্ব ডোমেইন এবং ইনলাইন স্টাইল অনুমোদিত।
- img-src 'self' 'https://images.example.com': ইমেজ নিজস্ব ডোমেইন এবং নির্দিষ্ট CDN থেকে লোড হবে।
- connect-src 'self' https://api.example.com: AJAX কল ও WebSocket নিজস্ব ডোমেইন এবং নির্দিষ্ট API থেকে করা যাবে।
- font-src 'self' https://fonts.googleapis.com: ফন্ট কেবল নিজস্ব ডোমেইন এবং গুগল ফন্ট CDN থেকে আসবে।
Content Security Policy (CSP) ওয়েব অ্যাপ্লিকেশনগুলির নিরাপত্তা বাড়ানোর জন্য একটি শক্তিশালী টুল। এটি আপনি যেসব সোর্স থেকে কনটেন্ট লোড করতে চান তা নিয়ন্ত্রণ করতে সক্ষম করে, এবং কোনো অবাঞ্ছিত সোর্স থেকে কনটেন্ট লোড হতে বাধা দেয়। CSP ব্যবহার করার মাধ্যমে XSS আক্রমণ এবং অন্যান্য নিরাপত্তা সমস্যা কমানো সম্ভব। তবে, সঠিকভাবে CSP কনফিগার করার জন্য ধাপে ধাপে পরীক্ষা করা এবং প্রয়োজনীয় রিপোর্টিং ব্যবস্থা চালু রাখা গুরুত্বপূর্ণ।
সারাংশ:
- CSP ওয়েব অ্যাপ্লিকেশনের নিরাপত্তা উন্নত করতে সহায়ক।
Content-Security-Policyহেডার বা মেটা ট্যাগ ব্যবহার করে কনটেন্ট সোর্স নিয়ন্ত্রণ করা যায়।- CSP পলিসি নির্ধারণ করে, কনটেন্ট কোথা থেকে লোড করা যাবে এবং কোথা থেকে যাবে না।
- CSP রিপোর্টিং সিস্টেম ব্যবহার করে নিরাপত্তা ত্রুটি শনাক্ত করা যায়।
Read more