প্রভাব
ক্রস-সাইট রিকোয়েস্ট ফোরজি (CSRF) একজন আক্রমণকারীকে একটি ভিকটিম ব্রাউজারকে এমন একটি ভিন্ন ওয়েবসাইটে অবাঞ্ছিত ক্রিয়া সম্পাদনের জন্য প্রতারণা করার অনুমতি দেয় যেখানে শিকারটি বর্তমানে প্রমাণীকৃত। যেহেতু ব্রাউজার স্বয়ংক্রিয়ভাবে অনুরোধে কুকিজের মতো পরিবেষ্টিত শংসাপত্রগুলি অন্তর্ভুক্ত করে, একজন আক্রমণকারী রাষ্ট্র-পরিবর্তনকারী ক্রিয়াকলাপগুলি তৈরি করতে পারে — যেমন পাসওয়ার্ড পরিবর্তন করা, ডেটা মুছে ফেলা বা লেনদেন শুরু করা — ব্যবহারকারীর জ্ঞান ছাড়াই৷
মূল কারণ
CSRF-এর মূল কারণ হল ওয়েব ব্রাউজারের ডিফল্ট আচরণ যখনই সেই ডোমেনে একটি অনুরোধ করা হয়, অনুরোধের উৎস [S1] নির্বিশেষে একটি ডোমেনের সাথে যুক্ত কুকিজ পাঠানোর ক্ষেত্রে। অ্যাপ্লিকেশনের নিজস্ব ব্যবহারকারী ইন্টারফেস থেকে একটি অনুরোধ ইচ্ছাকৃতভাবে ট্রিগার করা হয়েছে এমন নির্দিষ্ট বৈধতা ছাড়া, সার্ভার একটি বৈধ ব্যবহারকারীর ক্রিয়া এবং একটি নকলের মধ্যে পার্থক্য করতে পারে না৷
জ্যাঙ্গো সিএসআরএফ সুরক্ষা ব্যবস্থা
মিডলওয়্যার এবং টেমপ্লেট ইন্টিগ্রেশন [S2] এর মাধ্যমে এই ঝুঁকিগুলি কমাতে জ্যাঙ্গো একটি অন্তর্নির্মিত প্রতিরক্ষা ব্যবস্থা সরবরাহ করে।
মিডলওয়্যার অ্যাক্টিভেশন
django.middleware.csrf.CsrfViewMiddleware CSRF সুরক্ষার জন্য দায়ী এবং সাধারণত [S2] ডিফল্টরূপে সক্ষম করা হয়। CSRF আক্রমণগুলি ইতিমধ্যেই [S2] পরিচালনা করা হয়েছে বলে অনুমান করে যে কোনও ভিউ মিডলওয়্যারের আগে এটি অবশ্যই অবস্থান করা উচিত।
টেমপ্লেট বাস্তবায়ন
যেকোনো অভ্যন্তরীণ POST ফর্মের জন্য, ডেভেলপারদের অবশ্যই <form> উপাদান [S2] এর ভিতরে {% csrf_token %} ট্যাগ অন্তর্ভুক্ত করতে হবে। এটি নিশ্চিত করে যে অনুরোধটিতে একটি অনন্য, গোপন টোকেন অন্তর্ভুক্ত করা হয়েছে, যা সার্ভার ব্যবহারকারীর সেশনের বিরুদ্ধে যাচাই করে।
টোকেন লিকেজের ঝুঁকি
একটি গুরুত্বপূর্ণ বাস্তবায়নের বিবরণ হল যে {% csrf_token %} কখনই বহিরাগত URL [S2] লক্ষ্য করে ফর্মগুলিতে অন্তর্ভুক্ত করা উচিত নয়৷ এটি করার ফলে একটি তৃতীয় পক্ষের কাছে গোপন CSRF টোকেন ফাঁস হবে, সম্ভাব্যভাবে ব্যবহারকারীর সেশন নিরাপত্তা [S2] এর সাথে আপস করবে।
ব্রাউজার-লেভেল ডিফেন্স: একই সাইট কুকিজ
আধুনিক ব্রাউজারগুলি Set-Cookie হেডারের জন্য SameSite অ্যাট্রিবিউট চালু করেছে যাতে [S1]-এর গভীরতার একটি স্তর সরবরাহ করা যায়।
- কঠোর: কুকিটি শুধুমাত্র প্রথম পক্ষের প্রেক্ষাপটে পাঠানো হয়, যার অর্থ URL বারে থাকা সাইটটি কুকির ডোমেনের [S1]-এর সাথে মেলে৷
- ল্যাক্স: কুকিটি ক্রস-সাইট সাবরিকোয়েস্টে পাঠানো হয় না (যেমন ছবি বা ফ্রেম) কিন্তু পাঠানো হয় যখন কোনো ব্যবহারকারী মূল সাইটে নেভিগেট করে, যেমন একটি স্ট্যান্ডার্ড লিঙ্ক [S1] অনুসরণ করে।
কিভাবে FixVibe এর জন্য পরীক্ষা করে
FixVibe এখন একটি গেটেড সক্রিয় চেক হিসাবে CSRF সুরক্ষা অন্তর্ভুক্ত করে। ডোমেন যাচাইকরণের পরে, active.csrf-protection আবিষ্কৃত রাষ্ট্র-পরিবর্তন ফর্মগুলি পরিদর্শন করে, CSRF-টোকেন-আকৃতির ইনপুট এবং একইসাইট কুকি সংকেতগুলির জন্য পরীক্ষা করে, তারপর একটি কম-প্রভাব জাল-অরিজিন জমা দেওয়ার চেষ্টা করে এবং সার্ভার এটি গ্রহণ করলেই রিপোর্ট করে৷ কুকি চেকগুলি দুর্বল একইসাইট বৈশিষ্ট্যগুলিকেও ফ্ল্যাগ করে যা CSRF ডিফেন্স-ইন-ডেপথ কমিয়ে দেয়।
