আমাদের ক্লায়েন্ট কম্পিউটারে JWT সঞ্চয় করতে হবে। আমরা যদি এটি কোনও লোকালস্টোরেজ / সেশনসটরেজে সঞ্চয় করি তবে এটি এক্সএসএস আক্রমণ দ্বারা সহজেই ধরা পড়তে পারে। যদি আমরা এটি কুকিগুলিতে সঞ্চয় করি তবে কোনও হ্যাকার এটি ব্যবহার করতে পারে (এটি না পড়ে) কোনও সিএসআরএফ আক্রমণে এবং ব্যবহারকারীর ছদ্মবেশ তৈরি করতে এবং আমাদের এপিআইয়ের সাথে যোগাযোগ করতে এবং ক্রিয়া করার অনুরোধ পাঠাতে বা ব্যবহারকারীর পক্ষে তথ্য পেতে পারে behalf
তবে কুকিজগুলিতে জেডাব্লুটিটি সুরক্ষিত করার বিভিন্ন উপায় রয়েছে যাতে সহজে চুরি না হয় (তবে এগুলি চুরি করার কিছু উন্নত কৌশল এখনও রয়েছে)। তবে আপনি যদি লোকালস্টোরেজ / সেশনস্টোরারে নির্ভর করতে চান তবে এটি সাধারণ এক্সএসএস আক্রমণ দ্বারা অ্যাক্সেস করা যায়।
সুতরাং সিএসআরএফ সমস্যা সমাধানের জন্য, আমি আমার অ্যাপ্লিকেশনটিতে ডাবল জমা কুকিজ ব্যবহার করি।
ডাবল জমা দিন কুকিজ পদ্ধতি
এইচটিপিপিএস থেকে অন্য কোনও কুকিতে জেডাব্লুটি সংরক্ষণ করুন এবং এটি এইচটিটিপিএস-এর মাধ্যমে স্থানান্তর করতে সুরক্ষিত মোডে ব্যবহার করুন।
বেশিরভাগ সিএসআরএফ আক্রমণগুলির অনুরোধে আপনার মূল হোস্টের সাথে আলাদা উত্স বা রেফারার শিরোনাম থাকে। সুতরাং শিরোনামে তাদের কোনও আছে কিনা তা পরীক্ষা করে দেখুন, তারা কি আপনার ডোমেন থেকে আসছে বা না! যদি তাদের প্রত্যাখ্যান না। অনুরোধে যদি উত্স এবং রেফার উভয়ই উপলব্ধ না হয় তবে কোনও উদ্বেগ নেই। আপনি এক্স-এক্সএসআরএফ-টোকেন শিরোনাম বৈধকরণের ফলাফলের উপর নির্ভর করতে পারেন যা আমি পরবর্তী পদক্ষেপে ব্যাখ্যা করেছি।
ব্রাউজারটি স্বয়ংক্রিয়ভাবে অনুরোধের ডোমেনের জন্য আপনার কুকিজ সরবরাহ করবে, তবে একটি কার্যকর সীমাবদ্ধতা রয়েছে: একটি ওয়েবসাইটে চলছে এমন জাভাস্ক্রিপ্ট কোডটি অন্য ওয়েবসাইটগুলির কুকিজ পড়তে পারে না। আমরা আমাদের সিএসআরএফ সমাধান তৈরি করতে এটিকে কাজে লাগাতে পারি। সিএসআরএফ আক্রমণ প্রতিরোধ করতে, আমাদের অবশ্যই একটি অতিরিক্ত জাভাস্ক্রিপ্ট পঠনযোগ্য কুকি তৈরি করতে হবে যা বলা হয়: এক্সএসআরএফ-টোকেন। ব্যবহারকারী লগ ইন থাকাকালীন অবশ্যই এই কুকি তৈরি করতে হবে এবং এলোমেলো, অনুমানযোগ্য স্ট্রিং থাকা উচিত। আমরা ব্যক্তিগত সংখ্যা হিসাবে নিজেই এই সংখ্যাটি JWT- এ সংরক্ষণ করি। প্রতিবার জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন কোনও অনুরোধ করতে চাইলে, এটি এই টোকেনটি পড়তে হবে এবং এটি একটি কাস্টম এইচটিটিপি শিরোনামের সাথে পাঠাতে হবে। কারণ এই ক্রিয়াকলাপগুলি (কুকি পড়া, শিরোনাম সেট করা) কেবল জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনটির একই ডোমেনে করা যেতে পারে,
কৌণিক জেএস আপনার জীবনকে সহজ করে তোলে
ভাগ্যক্রমে, আমি আমাদের প্ল্যাটফর্ম এবং কৌনিক প্যাকেজগুলিতে সিএসআরএফ টোকেন পদ্ধতির অ্যাংুলার জেএস ব্যবহার করছি, এটি কার্যকর করার জন্য আমাদের আরও সহজ করে তুলছে। আমাদের কৌনিক অ্যাপ্লিকেশনটি সার্ভারটি করে এমন প্রতিটি অনুরোধের জন্য, কৌণিক $http
পরিষেবা স্বয়ংক্রিয়ভাবে এই জিনিসগুলি করবে:
- বর্তমান ডোমেনে XSRF-TOKEN নামের একটি কুকি সন্ধান করুন।
- যদি সেই কুকিটি পাওয়া যায় তবে এটি মানটি পড়ে এবং এটি X-XSRF-TOKEN শিরোনাম হিসাবে অনুরোধে যুক্ত করে adds
এভাবে ক্লায়েন্ট-সাইড বাস্তবায়ন আপনার জন্য স্বয়ংক্রিয়ভাবে পরিচালিত হবে! আমাদের কেবলমাত্র XSRF-TOKEN
সার্ভারের সাইডে বর্তমান ডোমেনে একটি কুকি সেট করতে হবে এবং যখন আমাদের এপিআই ক্লায়েন্টের কাছ থেকে কোনও কল পেয়েছে তখন এটি অবশ্যই X-XSRF-TOKEN
শিরোনামটি পরীক্ষা করে JWT এর সাথে এটি তুলনা করতে পারে XSRF-TOKEN
। যদি সেগুলি মেলে, তবে ব্যবহারকারীটি আসল। অন্যথায়, এটি একটি জাল অনুরোধ এবং আপনি এটিকে উপেক্ষা করতে পারেন। এই পদ্ধতিটি "ডাবল জমা কুকি" পদ্ধতি দ্বারা অনুপ্রাণিত।
সতর্ক করা
বাস্তবে, আপনি এখনও এক্সএসএসের কাছে সংবেদনশীল, এটি কেবলমাত্র আক্রমণকারী আপনাকে পরে ব্যবহারের জন্য জেডাব্লুটি টোকন চুরি করতে পারে না, তবে তিনি এখনও এক্সএসএস ব্যবহার করে আপনার ব্যবহারকারীদের পক্ষে অনুরোধ করতে পারেন।
আপনি আপনার জেডাব্লুটিটি সংরক্ষণ করুন localStorage
বা আপনি যদি আপনার এক্সএসআরএফ-টোকেনটি এইচটিটিপি কেবলমাত্র কুকিতে না সঞ্চয় করেন তবে উভয়ই এক্সএসএস সহজেই ধরা পড়বে। এমনকি আপনার এইচটিপিপি কেবলমাত্র কুকিতে আপনার জেডব্লিউটি এক্সএসটি পদ্ধতির মতো উন্নত এক্সএসএস আক্রমণ দ্বারা ধরতে পারে ।
সুতরাং ডাবল জমা কুকিজ পদ্ধতি ছাড়াও, আপনাকে সর্বদা এক্সএসএসের বিরুদ্ধে পালানোর সামগ্রীগুলি সহ সেরা অনুশীলনগুলি অনুসরণ করতে হবে। এর অর্থ ব্রাউজারটি এমন কিছু করতে পারে যা আপনি না চান এমন কোনও এক্সিকিউটেবল কোড অপসারণ করে। সাধারণত এর অর্থ // <![CDATA[
জাভাস্ক্রিপ্টকে মূল্যায়িত করার কারণ ট্যাগ এবং এইচটিএমএল বৈশিষ্ট্যগুলি অপসারণ করা।
এখানে আরও পড়ুন: