𝗖𝗼𝗻𝗰𝘂𝗿𝗿𝗲𝗻𝘁 𝗟𝗼𝗴𝗶𝗻 𝗦𝗲𝗰𝘂𝗿𝗶𝘁𝘆
আনলিমিটেড লগইন গুরুতর বিজনেস লজিক ত্রুটি লুকিয়ে রাখতে পারে।
একজন ব্যবহারকারী একটি ল্যাপটপে লগইন করেন। কয়েক সেকেন্ড পরে, একই অ্যাকাউন্ট দিয়ে অন্য একটি ব্রাউজারে লগইন করা হয়। তারপর একটি মোবাইল ডিভাইস। এরপর একটি API ক্লায়েন্ট। সবকিছুই নিখুঁতভাবে কাজ করছে।
এটি ঠিক মনে হতে পারে কারণ অনেক অ্যাপ একাধিক ডিভাইস সমর্থন করে। কিন্তু আপনার নিজেকে প্রশ্ন করতে হবে: প্রতিটি অ্যাপ্লিকেশন কি আনলিমিটেড সেশন অ্যালাউ করা উচিত?
কিছু সিস্টেমে একাধিক সেশন একটি ফিচার। অন্যদের ক্ষেত্রে, এটি একটি ত্রুটি যা আক্রমণকারীরা লুকিয়ে থাকার জন্য ব্যবহার করে। এটি একটি বিজনেস লজিক ভালনারেবিলিটি (business logic vulnerability)। কোডটি ডিজাইন অনুযায়ী কাজ করছে, কিন্তু ডিজাইনটি নিজেই দুর্বল।
পার্থক্য: • ট্র্যাডিশনাল বাগ (Traditional bugs) কোডিংয়ের ভুলকে কাজে লাগায়। • বিজনেস লজিক বাগ (Business logic bugs) ডিজাইনের সিদ্ধান্তকে কাজে লাগায়।
একটি মুভি স্ট্রিমিং সার্ভিসের কথা ভাবুন। যদি একটি সাবস্ক্রিপশন দিয়ে দশজন একসাথে দেখতে পারে, তবে লগইন সিস্টেম ঠিক আছে। কিন্তু বিজনেস রুল বা ব্যবসায়িক নিয়মটি ব্যর্থ হচ্ছে।
এটি ব্যাংকিং, অ্যাডমিন প্যানেল এবং SaaS প্রোডাক্টের ক্ষেত্রে প্রযোজ্য।
এটি কীভাবে টেস্ট করবেন:
- ব্রাউজার A দিয়ে লগইন করুন এবং এটি সচল রাখুন।
- ব্রাউজার B-তে একটি ইনকগনিটো (incognito) উইন্ডো খুলুন।
- একই ক্রেডেনশিয়াল (credentials) দিয়ে লগইন করুন।
- প্রথম সেশনটি এখনও কাজ করছে কি না তা পরীক্ষা করুন।
- আপনি উভয় সেশনেই সেনসিটিভ অ্যাকশন নিতে পারছেন কি না তা পরীক্ষা করুন।
হাই-সিকিউরিটি অ্যাপগুলো প্রায়ই এই নিয়মগুলো মেনে চলে:
- প্রতিটি অ্যাকাউন্টের জন্য একটি মাত্র সচল সেশন।
- নতুন লগইন হলে পুরনো সেশনগুলো লগ আউট করে দেওয়া।
- ডিভাইস ম্যানেজ করার জন্য কন্ট্রোল।
- নতুন লগইনের জন্য অ্যালার্ট।
যদি কোনো আক্রমণকারী ক্রেডেনশিয়াল চুরি করে, তবে আপনি যদি আনলিমিটেড সেশন অ্যালাউ করেন, তবে তারা চিরকাল লগইন অবস্থায় থাকতে পারে। আসল ব্যবহারকারী যখন সক্রিয় থাকেন, তখন আক্রমণকারীও সক্রিয় থাকে। কেউই অনুপ্রবেশকারীকে লক্ষ্য করতে পারে না।
প্রেক্ষাপটই সব। যেসব অ্যাপে অনেক সেশনের প্রয়োজন হয়:
- মেসেজিং অ্যাপ।
- সোশ্যাল মিডিয়া।
- ইমেল সার্ভিস।
যেসব অ্যাপে কঠোর নিয়ন্ত্রণের প্রয়োজন হয়:
- ব্যাংকিং সিস্টেম।
- অ্যাডমিন ড্যাশবোর্ড।
- হেলথকেয়ার প্ল্যাটফর্ম।
এটি কীভাবে সমাধান করবেন:
- একটি ডাটাবেসে সচল সেশন আইডিগুলো (session IDs) সংরক্ষণ করুন।
- যখন নতুন লগইন হবে, পুরনো সেশনটি বন্ধ করে দিন।
- ব্যবহারকারীদের সচল ডিভাইস এবং লোকেশন দেখার সুযোগ দিন।
- একটি "Log out from all devices" বাটন যোগ করুন।
- নতুন লগইনের জন্য ইমেল বা SMS অ্যালার্ট পাঠান।
শুধুমাত্র SQL ইনজেকশনের মতো কোড বাগ খুঁজবেন না। আপনার অ্যাপ কী করছে এবং আপনার ব্যবসার কী প্রয়োজন—এই দুটির মধ্যে কোনো ফাঁক আছে কি না তা দেখুন।
আজই আপনার সেশন পলিসিটি পর্যালোচনা করুন। আপনার সবচেয়ে বড় ঝুঁকি ভাঙা কোড নাও হতে পারে। এটি হতে পারে ত্রুটিপূর্ণ লজিক।