Django তে কন্টেন্ট সিকিউরিটি পলিসি (CSP) সেটআপ করার প্রক্রিয়া এবং এর কার্যকারিতা ব্যাখ্যা করতে চলেছি। আমরা ধাপে ধাপে যাবো, যেখানে CSP কিভাবে কাজ করে এবং এটি কিভাবে হ্যাকারদের স্ক্রিপ্ট ইনজেকশন বা অন্যান্য আক্রমণকে ব্লক করে তা বুঝতে সহায়তা করবে।
ধাপ ১: Django প্রোজেক্ট কনফিগারেশন
১. Django ইনস্টল করুন
প্রথমে আপনার Django ইনস্টল করা থাকতে হবে। যদি ইনস্টল করা না থাকে, তবে নিচের কমান্ডটি ব্যবহার করুন:
pip install django
২. একটি নতুন Django প্রোজেক্ট তৈরি করুন
নতুন প্রোজেক্ট তৈরি করতে নিচের কমান্ডটি ব্যবহার করুন:
django-admin startproject csp_demo
৩. প্রোজেক্টের ডিরেক্টরিতে যান
cd csp_demo
৪. একটি অ্যাপ তৈরি করুন
python manage.py startapp myapp
৫. অ্যাপটি settings.py এ যুক্ত করুন
settings.py ফাইলে গিয়ে INSTALLED_APPS এর মধ্যে myapp যুক্ত করুন:
# csp_demo/settings.py
INSTALLED_APPS = [
...
'myapp',
]
ধাপ ২: CSP কনফিগারেশন
১. Django CSP প্যাকেজ ইনস্টল করুন
CSP সেটিংস ব্যবস্থাপনার জন্য একটি প্যাকেজ ইনস্টল করতে হবে:
pip install django-csp
২. settings.py ফাইলে CSP সেটিংস যুক্ত করুন
CSP সেটিংস যুক্ত করতে settings.py ফাইলে নিচের কোডটি যুক্ত করুন:
# csp_demo/settings.py
INSTALLED_APPS = [
...
'csp',
]
MIDDLEWARE = [
...
'csp.middleware.CSPMiddleware',
]
CSP_DEFAULT_SRC = ("'self'",) # ডিফল্ট উৎস
CSP_SCRIPT_SRC = (
"'self'",
"https://trustedscripts.example.com",
"https://anothertrustedscript.com", # আরও একটি ট্রাস্টেড স্ক্রিপ্ট উৎস
)
CSP_IMG_SRC = (
"'self'",
"https://trustedimages.example.com",
"https://anothertrustedimage.com", # আরও একটি ট্রাস্টেড ইমেজ উৎস
)
CSP_STYLE_SRC = (
"'self'",
"https://trustedstyles.example.com",
"https://anothertrustedstyle.com", # আরও একটি ট্রাস্টেড স্টাইল উৎস
)
CSP_CONNECT_SRC = (
"'self'",
"https://api.example.com",
"https://anotherapi.com", # আরও একটি ট্রাস্টেড API উৎস
)
ধাপ ৩: প্যারামিটার ব্যাখ্যা
- CSP_DEFAULT_SRC: এটি সব কন্টেন্টের জন্য একটি ডিফল্ট উৎস নির্ধারণ করে। অর্থাৎ, যদি নির্দিষ্টভাবে অন্য কোন উৎস উল্লেখ না করা হয়, তবে সবকিছু
'self'থেকে আসবে। - CSP_SCRIPT_SRC: স্ক্রিপ্ট লোড করার জন্য অনুমোদিত উৎস। এখানে স্ক্রিপ্টগুলি শুধুমাত্র
'self',https://trustedscripts.example.com, এবংhttps://anothertrustedscript.comথেকে লোড হবে। অন্য কোন উৎস থেকে স্ক্রিপ্ট লোড করার চেষ্টা করলে তা ব্লক হবে। - CSP_IMG_SRC: ইমেজ লোড করার জন্য অনুমোদিত উৎস। এখানে ইমেজগুলি
'self',https://trustedimages.example.com, এবংhttps://anothertrustedimage.comথেকে লোড হবে। - CSP_STYLE_SRC: স্টাইলশিট লোড করার জন্য অনুমোদিত উৎস। এখানে স্টাইলশিটগুলি
'self',https://trustedstyles.example.com, এবংhttps://anothertrustedstyle.comথেকে লোড হবে। - CSP_CONNECT_SRC: API বা WebSocket কানেকশনের জন্য অনুমোদিত উৎস। এখানে কানেকশনগুলি
'self',https://api.example.com, এবংhttps://anotherapi.comথেকে হতে হবে।
ধাপ ৪: বাস্তব উদাহরণ
উদাহরণ ১: স্ক্রিপ্ট লোড করা
স্ক্রিপ্ট লোডিং সফল:
<script src="https://trustedscripts.example.com/script.js"></script>
এটি সফল হবে কারণ এটি CSP এর মধ্যে অনুমোদিত।
স্ক্রিপ্ট লোডিং ব্যর্থ:
<script src="https://maliciousscripts.com/malicious.js"></script>
এটি ব্লক হবে কারণ এটি অনুমোদিত নয়।
উদাহরণ ২: ইমেজ লোড করা
ইমেজ লোডিং সফল:
<img src="https://trustedimages.example.com/image.jpg" alt="Trusted Image">
এটি সফল হবে।
ইমেজ লোডিং ব্যর্থ:
<img src="https://untrustedimages.com/image.jpg" alt="Example Image">
এটি ব্লক হবে।
ধাপ ৫: হ্যাকারদের জন্য উপকারিতা
হ্যাকার ১: স্ক্রিপ্ট ইনজেকশন
- CSP ছাড়াই: একটি হ্যাকার যদি https://example.com এ একটি স্ক্রিপ্ট ইনজেক্ট করে, তবে সেই স্ক্রিপ্ট কার্যকর হবে এবং ব্যবহারকারীদের তথ্য চুরি করতে পারে।
- CSP সহ: CSP সেট করা থাকলে, হ্যাকাররা স্ক্রিপ্ট ইনজেক্ট করতে চেষ্টা করলেও এটি কার্যকর হবে না কারণ সেটি অনুমোদিত উৎসের বাইরে।
হ্যাকার ২: ম্যালিশিয়াস ইমেজ লোডিং
- CSP ছাড়াই: হ্যাকার যদি একটি ম্যালিশিয়াস ইমেজ ইনজেক্ট করে, তবে ব্যবহারকারীরা সেটি দেখতে পাবে এবং সেটি তাদের ক্ষতি করতে পারে।
- CSP সহ: CSP সেট করা থাকলে, ম্যালিশিয়াস ইমেজ ব্লক হয়ে যাবে এবং ব্যবহারকারীরা সেটি দেখতে পাবে না।
উপসংহার
CSP সেট করা একটি কার্যকর পদ্ধতি আপনার Django অ্যাপ্লিকেশনকে সুরক্ষিত করার জন্য। এটি ম্যালিশিয়াস স্ক্রিপ্ট এবং কন্টেন্ট ব্লক করতে সহায়তা করে, ব্যবহারকারীদের সুরক্ষা নিশ্চিত করে। উপরে উল্লেখিত উদাহরণ এবং ব্যাখ্যা দিয়ে আশা করি CSP কিভাবে কাজ করে এবং কিভাবে এটি হ্যাকারদের আক্রমণকে ব্লক করতে সাহায্য করে তা বুঝতে পেরেছেন।