Skip to content

System Security (সিস্টেম সিকিউরিটি ডিপ-ডাইভ)

একটি সিস্টেমের ডিজাইন যতই ভালো হোক না কেন, যদি সেটি সিকিউর না হয় তবে তা ব্যর্থ। ইন্টারভিউতে সিকিউরিটির কোর থিওরি এবং প্রোটোকল সম্পর্কে বিস্তারিত প্রশ্ন করা হয়।


১. অথেনটিকেশন বনাম অথরাইজেশন (AuthN vs AuthZ)

ইন্টারভিউতে এই দুটি শব্দের পার্থক্য প্রায়ই জিজ্ঞাসা করা হয়:

  • Authentication (AuthN): ইউজারের পরিচয় নিশ্চিত করা। অর্থাৎ, "আপনি কে?" (উদা: লগইন ইউজারনেম ও পাসওয়ার্ড)।
  • Authorization (AuthZ): ইউজারের ক্ষমতা বা পারমিশন চেক করা। অর্থাৎ, "আপনি কী কী করার অনুমতি পেয়েছেন?" (উদা: একজন ইউজার ফাইল দেখতে পারবেন কিন্তু ডিলিট করতে পারবেন না)।

২. RBAC (Role-Based Access Control)

RBAC হলো ইউজারের 'রোল' বা পদের ওপর ভিত্তি করে পারমিশন দেওয়ার পদ্ধতি।

  • কিভাবে কাজ করে: প্রথমে কিছু রোল ডিফাইন করা হয় (উদা: Admin, Editor, Viewer)। এরপর ইউজারকে একটি রোলে অ্যাসাইন করা হয়।
  • সুবিধা: পারমিশন ম্যানেজমেন্ট সহজ হয় কারণ আলাদা আলাদা ইউজারের বদলে শুধু রোল ম্যানেজ করলেই চলে।

৩. OAuth 2.0 এবং JWT

OAuth 2.0

এটি একটি ইন্ডাস্ট্রি স্ট্যান্ডার্ড ডেলিগেটেড অথরাইজেশন ফ্রেমওয়ার্ক। এটি ইউজারকে তার পাসওয়ার্ড না দিয়ে থার্ড-পার্টি অ্যাপকে (উদা: লগইন উইথ গুগল) পারমিশন দেওয়ার সুযোগ দেয়।

  • Key Terms: Access Token, Refresh Token, Scopes.

JWT (JSON Web Token)

JWT হলো একটি সিকিউর উপায় যার মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে তথ্য আদান-প্রদান করা হয়।

  • স্ট্রাকচার: Header, Payload, Signature.
  • সুবিধা: এটি স্টেটলেস (Stateless), অর্থাৎ সার্ভারকে সেশন আইডি স্টোর করে রাখতে হয় না।

৪. SSL/TLS (Encryption in Transit)

SSL/TLS হলো ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা এনক্রিপ্ট করার পদ্ধতি যাতে মাঝপথে কেউ ডেটা চুরি বা হ্যাক করতে না পারে।

  • TLS Handshake: ক্লায়েন্ট এবং সার্ভার একে অপরের সাথে এনক্রিপশন কি (Key) এক্সচেঞ্জ করে সিকিউর কানেকশন তৈরি করে।
  • HTTPS: এটি HTTP-এর সিকিউর ভার্সন যা TLS ব্যবহার করে।

৫. সাধারণ ইন্টারভিউ প্রশ্নোত্তর (General Q&A)

প্রশ্ন ১: পাসওয়ার্ড স্টোর করার সঠিক পদ্ধতি কী?উত্তর: পাসওয়ার্ড কখনোই সাধারণ টেক্সট (Plain text) হিসেবে রাখা উচিত নয়। একে সবসময় Salted Hash (উদা: Argon2 বা BCrypt) করে ডাটাবেসে রাখতে হবে।

প্রশ্ন ২: JWT ফোর্সমূলকভাবে ইনভেলিডেট (Invalidate) করবেন কীভাবে?উত্তর: JWT যেহেতু ক্লায়েন্ট সাইডে থাকে, তাই একে সার্ভার সাইড থেকে ইনভেলিডেট করা কঠিন। সমাধান হিসেবে একটি Blacklist (Redis-এ) মেনটেইন করা যায় অথবা টোকেনের TTL খুব কম রাখা হয়।

প্রশ্ন ৩: SSL এবং TLS এর মধ্যে বড় পার্থক্য কী?উত্তর: SSL হলো পুরনো এবং বর্তমানে ইনসিকিউর প্রোটোকল। TLS হলো SSL-এর আধুনিক এবং বেশি সিকিউর ভার্সন। বর্তমানে আমরা যা ব্যবহার করি তা মূলত TLS।


৬. সিনারিও ভিত্তিক প্রশ্ন (Scenario-based Questions)

সিনারিও ১: "আপনার সিস্টেমে একজন এমপ্লয়ি চাকরি ছেড়ে দিয়েছেন। আপনি কীভাবে নিশ্চিত করবেন যে তিনি আর ইন্টারনাল প্যানেল অ্যাক্সেস করতে পারবেন না?"

সমাধান: ১. প্রথমেই তার অ্যাকাউন্টটি ডাটাবেস থেকে Disable বা Delete করব। ২. তার যদি কোনো অ্যাক্টিভ সেশন বা JWT থাকে, তবে তা Blacklist করব। ৩. RBAC সিস্টেম থেকে তার সব রোল থেকে রিমুভ করব।

সিনারিও ২: "একটি থার্ড-পার্টি অ্যাপ আপনার ইউজারের শুধুমাত্র ইমেইল রিড করতে চায়। আপনি কোন মেকানিজম ব্যবহার করবেন?"

সমাধান: এখানে OAuth 2.0 ব্যবহার করব। ইউজারের কাছে শুধুমাত্র 'read-email' এর জন্য পারমিশন (Scope) চাইব। এতে থার্ড-পার্টি অ্যাপ ইউজারের পাসওয়ার্ড জানবে না এবং শুধুমাত্র ইমেইলই অ্যাক্সেস করতে পারবে।

সিনারিও ৩: "পেমেন্ট গেটওয়ে এপিআই কল করার সময় আপনি মিডলম্যান অ্যাটাক (Man-in-the-middle) আটকাবেন কীভাবে?"

সমাধান: ১. অবশ্যই HTTPS (TLS) ব্যবহার করতে হবে। ২. Certificate Pinning ব্যবহার করা যেতে পারে যাতে সার্ভার শুধুমাত্র প্রি-ডিফাইন্ড সার্টিফিকেটই গ্রহণ করে। ৩. রিকোয়েস্টের বডি এনক্রিপ্ট করে এবং ডিজিটাল সিগনেচার ব্যবহার করে ডেটা ট্যাম্পারিং চেক করব।


CAUTION

সিকিউরিটির ক্ষেত্রে Least Privilege Principle মেনে চলুন। অর্থাৎ একজন ইউজারকে শুধুমাত্র ততটুকুই পারমিশন দিন যতটুকু তার কাজের জন্য প্রয়োজন।

Released under the MIT License.