আমি সিএসআরএফ এবং এটি প্রতিরোধের উপযুক্ত উপায়গুলি সহ পুরো বিষয়টি বোঝার চেষ্টা করছি। (আমি যে সংস্থানগুলি পড়েছি, বুঝতে পেরেছি এবং এতে একমত হয়েছি : OWASP সিএসআরএফ প্রতিরোধ চিট শিট , সিএসআরএফ সম্পর্কে প্রশ্নাবলী ।)
আমি যেমন এটি বুঝতে পারি, সিএসআরএফের আশেপাশের দুর্বলতা এই ধারণাটি দ্বারা চালু করা হয়েছে যে (ওয়েবসার্ভারের দৃষ্টিকোণ থেকে) একটি আগত এইচটিটিপি অনুরোধে একটি বৈধ সেশন কুকি কোনও অনুমোদনপ্রাপ্ত ব্যবহারকারীর ইচ্ছাকে প্রতিফলিত করে। তবে মূল ডোমেনের জন্য সমস্ত কুকিজ ব্রাউজারের অনুরোধের সাথে যাদুকরীভাবে সংযুক্ত রয়েছে, তাই সত্যই সমস্ত সার্ভার একটি অনুরোধে একটি বৈধ সেশন কুকির উপস্থিতি থেকে অনুমান করতে পারে যে অনুরোধটি এমন একটি ব্রাউজার থেকে আসে যার একটি অনুমোদনকৃত অধিবেশন থাকে; এটি কোড সম্পর্কে আরও কিছু ধরে নিতে পারে নাএই ব্রাউজারে চলমান, বা এটি প্রকৃতপক্ষে ব্যবহারকারীর শুভেচ্ছাকে প্রতিফলিত করে। এটি প্রতিরোধের উপায়টি হ'ল অনুরোধে অতিরিক্ত প্রমাণীকরণ তথ্য ("সিএসআরএফ টোকেন") অন্তর্ভুক্ত করা হয় যা ব্রাউজারের স্বয়ংক্রিয় কুকি হ্যান্ডলিং ব্যতীত অন্য কোনও উপায়ে চালিত হয়। স্বাচ্ছন্দ্যে বললে, সেশন কুকি ব্যবহারকারী / ব্রাউজারকে অনুমোদন দেয় এবং সিএসআরএফ টোকেন ব্রাউজারে চলমান কোডটিকে অনুমোদন দেয়।
সুতরাং সংক্ষেপে, আপনি যদি নিজের ওয়েব অ্যাপ্লিকেশনটির ব্যবহারকারীদের প্রমাণীকরণের জন্য সেশন কুকি ব্যবহার করেন তবে আপনার প্রতিটি প্রতিক্রিয়ায় একটি সিএসআরএফ টোকেন যুক্ত করা উচিত এবং প্রতিটি (পরিবর্তিত) অনুরোধে একটি সিএসআরএফ টোকেনের প্রয়োজন। এরপরে সিএসআরএফ টোকেন সার্ভার থেকে ব্রাউজারে সার্ভারে একটি গোলটেপ তৈরি করে সার্ভারের কাছে প্রমাণ করে যে অনুরোধ করা পৃষ্ঠাটি সেই সার্ভারের (অনুমোদিত, এমনকি) দ্বারা অনুমোদিত হয়েছে that
আমার প্রশ্নে, যা সেই রাউন্ড্রিপটিতে সিএসআরএফ টোকেনের জন্য ব্যবহৃত নির্দিষ্ট পরিবহন পদ্ধতি সম্পর্কে।
কুকি হিসাবে সার্ভার থেকে ক্লায়েন্টে সিএসআরএফ টোকেন প্রেরণ (যেমন একটি সেট-কুকির শিরোনামে), এবং তারপরে ক্লায়েন্টে জাভাস্ক্রিপ্টটিকে কুকির বাইরে থেকে স্ক্র্যাপ করে সংযুক্ত করে দেওয়া (সাধারণভাবে অ্যাঙ্গুলার জেএস , জাঙ্গো , রেলগুলিতে ) সাধারণ বলে মনে হচ্ছে it সার্ভারে ফেরত পাঠানোর জন্য পৃথক এক্সএসআরএফ-টোকেন শিরোনাম হিসাবে।
(একটি বিকল্প পদ্ধতি হ'ল উদাহরণস্বরূপ, এক্সপ্রেস দ্বারা প্রস্তাবিত , যেখানে সার্ভারের দ্বারা উত্পাদিত সিএসআরএফ টোকেনটি সার্ভার-সাইড টেম্পলেট সম্প্রসারণের মাধ্যমে প্রতিক্রিয়ার বডিতে অন্তর্ভুক্ত করা হয়েছে, কোড / মার্কআপের সাথে সরাসরি সংযুক্ত যা এটি সার্ভারে ফিরে সরবরাহ করবে, যেমন একটি লুকানো ফর্ম ইনপুট হিসাবে। উদাহরণটি আরও বেশি কাজ করার 1.5 ওয়েব উপায়, তবে আরও জেএস-ভারী ক্লায়েন্টকে জরিমানা করা হবে general
কেন সিএসআরএফ টোকেনের ডাউনস্ট्रीम ট্রান্সপোর্ট হিসাবে সেট-কুকি ব্যবহার করা এত সাধারণ / কেন এটি ভাল ধারণা? আমি কল্পনা করি যে এই সমস্ত ফ্রেমওয়ার্কের লেখকরা তাদের বিকল্পগুলি সাবধানতার সাথে বিবেচনা করেছেন এবং এটি ভুল হয়নি। তবে প্রথম নজরে, কুকি ব্যবহার করে কুকিগুলির নকশার সীমাবদ্ধতা মূলত কী তা নির্বিঘ্ন বলে মনে হয় around প্রকৃতপক্ষে, আপনি যদি কুকিগুলি রাউন্ডট্রিপ পরিবহণ হিসাবে ব্যবহার করেন (সেট-কুকি: ব্রাউজারটিকে সিএসআরএফ টোকেনটি জানাতে সার্ভারের জন্য হেডার ডাউনস্ট্রিম এবং কুকি: ব্রাউজারটিকে এটি সার্ভারে ফিরিয়ে আনতে হেডার আপস্ট্রিম) আপনি দুর্বলতার পুনরায় পরিচয় করিয়ে দেবেন ঠিক করার চেষ্টা করা হয়।
আমি বুঝতে পারি যে উপরের ফ্রেমওয়ার্কগুলি সিএসআরএফ টোকেনের জন্য পুরো রাউন্ডট্রিপের জন্য কুকিজ ব্যবহার করে না; তারা প্রবাহিত সেট-কুকি ব্যবহার করে, তারপরে অন্য কিছু (যেমন একটি এক্স-সিএসআরএফ-টোকেন শিরোনাম) প্রবাহিত এবং এটি দুর্বলতা বন্ধ করে দেয়। এমনকি ডাউন-স্ট্রিম ট্রান্সপোর্ট হিসাবে সেট-কুকি ব্যবহার করা সম্ভাব্য বিভ্রান্তিকর এবং বিপজ্জনক; ব্রাউজারটি এখন আসল দূষিত এক্সএসআরএফ অনুরোধ সহ প্রতিটি অনুরোধের সাথে সিএসআরএফ টোকন সংযুক্ত করবে; সর্বোত্তমভাবে যা অনুরোধটিকে তার প্রয়োজনের চেয়ে আরও বড় করে তোলে এবং সর্বোপরি সার্ভার কোডের কিছু সঠিক অর্থপূর্ণ তবে ভুল পথে চালিত অংশটি এটি ব্যবহার করার চেষ্টা করতে পারে যা সত্যই খারাপ। এবং আরও, যেহেতু সিএসআরএফ টোকেনটির আসল উদ্দেশ্যপ্রাপ্ত প্রাপকটি ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট, এর অর্থ এই কুকি কেবল এইচটিপি-র সাহায্যে সুরক্ষিত করা যায় না।