কল্পিত গল্প: মায়া, আলভী, এবং হ্যাকার ইভান
মায়া একজন নিয়মিত ব্যবহারকারী যিনি একটি জনপ্রিয় অনলাইন ব্যাংকিং সাইটে (www.bankexample.com) অ্যাকাউন্ট ব্যবহার করেন। আলভী হলেন একজন ভালো সফটওয়্যার ইঞ্জিনিয়ার যিনি এই সাইটটি তৈরি করেছেন এবং ব্যবহারকারীদের নিরাপত্তা নিশ্চিত করতে চান। অন্যদিকে, ইভান একজন হ্যাকার, যার লক্ষ্য মায়ার ব্যাংক অ্যাকাউন্ট থেকে টাকা চুরি করা।
ঘটনাক্রম
১. মায়া লগইন করলেন
মায়া তার অনলাইন ব্যাংকিং সাইটে লগইন করলেন এবং নিজের ব্যালেন্স চেক করলেন। লগইন করার পরে, সাইটটি তার ব্রাউজারে একটি সেশন কুকি সংরক্ষণ করে, যা মায়াকে বলে যে তিনি লগইন অবস্থায় আছেন। এই সেশন কুকি ব্যবহার করে, মায়া সহজেই অর্থ স্থানান্তর বা পেমেন্ট করতে পারবেন।
২. ইভানের চক্রান্ত
ইভান, হ্যাকার, একটি ম্যালিশাস ওয়েবসাইট তৈরি করল যেখানে একটি গোপন HTML ফর্ম রয়েছে। এই ফর্মটি এমনভাবে তৈরি করা হয়েছে যে মায়া যদি ওয়েবসাইটটি পরিদর্শন করেন, তাহলে ফর্মটি স্বয়ংক্রিয়ভাবে মায়ার ব্যাংক অ্যাকাউন্ট থেকে ইভানের অ্যাকাউন্টে টাকা স্থানান্তর করার জন্য একটি POST রিকোয়েস্ট পাঠিয়ে দেয়।
<!-- ইভানের ম্যালিশাস ওয়েবপেজ -->
<html>
<body>
<form id="csrf-form" action="https://www.bankexample.com/transfer-money" method="POST">
<input type="hidden" name="account" value="Evan's Account Number">
<input type="hidden" name="amount" value="1000">
</form>
<script>
// ফর্ম স্বয়ংক্রিয়ভাবে সাবমিট হবে
document.getElementById('csrf-form').submit();
</script>
</body>
</html>
৩. মায়া ফাঁদে পড়লেন
ইভান এই ম্যালিশাস ওয়েবসাইটের লিংক মায়ার কাছে সোশ্যাল মিডিয়ার মাধ্যমে পাঠাল, যা দেখতে নিরীহ মনে হয়, যেমন “দেখুন কিউট বিড়ালছানার ভিডিও!”। মায়া লিংকটি ক্লিক করলেন। মায়ার ব্রাউজার লিংকটি খুলল এবং স্বয়ংক্রিয়ভাবে ফর্মটি সাবমিট করল, কারণ মায়া ইতিমধ্যেই তার ব্যাংক সাইটে লগইন করা অবস্থায় আছেন।
৪. আক্রমণ সফল হল
মায়ার ব্রাউজার তার সেশন কুকি সহ ম্যালিশাস POST রিকোয়েস্টটি ব্যাংকের সার্ভারে পাঠাল। ব্যাংকের সার্ভার মনে করল যে এটি একটি বৈধ রিকোয়েস্ট, কারণ এটি মায়ার সেশন কুকি সহ এসেছে। ফলে, মায়ার অ্যাকাউন্ট থেকে ইভানের অ্যাকাউন্টে ১০০০ টাকা স্থানান্তর হয়ে গেল, অথচ মায়া কিছুই বুঝতে পারলেন না।
CSRF প্রতিরোধের উপায়: CSRF টোকেন
আলভী, যিনি ব্যাংক সাইটটির ইঞ্জিনিয়ার, সিদ্ধান্ত নিলেন যে তিনি সাইটটিকে নিরাপদ করবেন। তিনি একটি CSRF টোকেন ব্যবহার করলেন, যা প্রতিটি ফর্ম সাবমিশনের জন্য প্রয়োজন হবে।
কিভাবে CSRF টোকেন কাজ করে
- টোকেন তৈরি: মায়া যখন ব্যাংকের পেজটি খুলেন, সার্ভার একটি ইউনিক CSRF টোকেন তৈরি করে এবং এটি HTML ফর্মে একটি হিডেন ইনপুট ফিল্ড হিসেবে পাঠায়।
<input type="hidden" name="csrf_token" value="unique_csrf_token_value">
টোকেন যাচাই: মায়া যখন ফর্ম সাবমিট করেন, টোকেনটি সার্ভারে পাঠানো হয়। সার্ভার যাচাই করে দেখে যে এই টোকেনটি সঠিক এবং প্রত্যাশিত কি না। যদি টোকেনটি মিলে না যায়, তবে সার্ভার বুঝতে পারে যে এটি একটি ম্যালিশাস রিকোয়েস্ট এবং সেটি বাতিল করে দেয়।