আপনার অ্যাপে টু-ফ্যাক্টর অথেন্টিকেশন (2FA) কীভাবে যোগ করবেন
আপনার অ্যাপে টু-ফ্যাক্টর অথেন্টিকেশন (2FA) যোগ করতে ব্যবহারকারীদের একটি অথেন্টিকেটর অ্যাপ QR কোড স্ক্যান করে যুক্ত করতে দিন, পাসওয়ার্ডের পর অ্যাপটির দেখানো ছয় অঙ্কের কোড চান, এবং সেই কোড সঠিক হলেই সার্ভারে একটি পূর্ণ সেশন তৈরি করুন। 2FA চালু করার সময় প্রতিটি ব্যবহারকারীকে একবার-ব্যবহারযোগ্য রিকভারি কোড দিন, কেউ কতবার অনুমান করতে পারবে তা সীমিত করুন, আর 2FA বন্ধ করতে পাসওয়ার্ড ও একটি বর্তমান কোড দুটোই লাগিয়ে দিন। যদি একটি হোস্টেড অথ প্রোভাইডার ব্যবহার করেন, তার বিল্ট-ইন মাল্টি-ফ্যাক্টর অপশন চালু করুন, নিজে বানানোর বদলে।
এই গাইডে বিকল্পগুলো, সঠিক প্রবাহ, AI বিল্ডারকে দেওয়ার প্রম্পট, এবং সেসব ভুল আছে যেগুলো 2FA-কে উপস্থিত কিন্তু অকার্যকর করে দেয়। ধারণাটি নতুন হলে আগে টু-ফ্যাক্টর অথেন্টিকেশন কী পড়ুন।
শুরুর আগে: একটি কাজ করা লগইন লাগবে
2FA আগে থেকে থাকা একটি সাইন-ইনের ওপর বসে। প্রথমে আপনার এগুলোর একটি লাগবে:
- আপনার নিজের লগইন, যেখানে ব্যবহারকারী ও হ্যাশ করা পাসওয়ার্ড আপনার অ্যাপের ডাটাবেসে থাকে।
- একটি হোস্টেড অথ প্রোভাইডার, যা আপনার জন্য ব্যবহারকারী পরিচালনা করে।
এর কোনোটি এখনো না থাকলে আপনার অ্যাপে লগইন কীভাবে যোগ করবেন দিয়ে শুরু করুন। এই গাইড ধরে নিচ্ছে যে একটি পাসওয়ার্ড ধাপ ইতিমধ্যে কাজ করে।
আপনার দ্বিতীয় ফ্যাক্টর বাছুন
| পদ্ধতি | ব্যবহারকারীর পরিশ্রম | নিরাপত্তা | চালানোর খরচ | ভালো ডিফল্ট? |
|---|---|---|---|---|
| অথেন্টিকেটর অ্যাপ (TOTP) | একবার QR কোড স্ক্যান, লগইনে কোড টাইপ | ভালো; ভুয়া সাইট কোড চাইলে ফিশ হতে পারে | বিনামূল্যে | বেশিরভাগ অ্যাপের জন্য হ্যাঁ |
| পাসকি বা সিকিউরিটি কী | ট্যাপ বা আঙুলের ছাপ ব্যবহার | সবচেয়ে শক্তিশালী; ফিশিং প্রতিরোধ করে | বিনামূল্যে | হ্যাঁ, ব্যবহারকারীরা প্রস্তুত থাকলে |
| ইমেইল কোড | লগইনের সময় ইনবক্স দেখা | শুধু ইমেইল অ্যাকাউন্টের মতো শক্তিশালী | ইমেইল পাঠানোর খরচ | শুধু ফ্যালব্যাক হিসেবে |
| SMS কোড | একটি টেক্সটের জন্য অপেক্ষা | সবচেয়ে দুর্বল; SIM swapping ও ফিশিং | প্রতি-বার্তা ফি | শুধু যখন ব্যবহারকারীরা অ্যাপ ব্যবহার করতে পারে না |
TOTP মানে time-based one-time password, সেই স্ট্যান্ডার্ড (RFC 6238) যা অথেন্টিকেটর অ্যাপগুলো ব্যবহার করে। আপনার সার্ভার ও ব্যবহারকারীর ফোন একটি সিক্রেট ভাগ করে; প্রতিটি সেই সিক্রেট ও বর্তমান সময় থেকে একই ছোট কোড তৈরি করে, যা সাধারণত প্রতি ৩০ সেকেন্ডে বদলায়। কোনো নেটওয়ার্ক সংযোগ বা SMS প্রোভাইডার লাগে না।
পাসকি একটি ক্রিপ্টোগ্রাফিক কী দিয়ে পাসওয়ার্ডের জায়গা নেয় বা তার সঙ্গে যুক্ত হয়, যা ব্যবহারকারীর ডিভাইসে থাকে। এগুলো শক্তিশালী কিন্তু নিজে বানাতে বেশি কাজ লাগে, তাই অনেক অ্যাপ TOTP দিয়ে শুরু করে এবং পরে পাসকি যোগ করে, অথবা একটি অথ প্রোভাইডার থেকে নেয়।
নিজে বানাবেন নাকি চালু করবেন?
| পদ্ধতি | সুবিধা | অসুবিধা |
|---|---|---|
| হোস্টেড অথ প্রোভাইডারের MFA | কম কোড; নিরাপত্তার বিবরণ প্রোভাইডার রক্ষণাবেক্ষণ করে | বড় আকারে মাসিক খরচ; প্রোভাইডারের অপশনের ওপর নির্ভরতা |
| লাইব্রেরি দিয়ে নিজের TOTP | পুরো নিয়ন্ত্রণ; প্রতি-ব্যবহারকারী ফি নেই | প্রান্তিক ক্ষেত্রগুলো আপনার: লকআউট, রিকভারি, সিক্রেট সংরক্ষণ |
আপনার প্রোভাইডার কোন ফ্যাক্টর সমর্থন করে এবং কোন প্ল্যানে, তা তার বর্তমান ডকুমেন্টেশনে দেখুন। যেভাবেই হোক, কোড তৈরির গণিত নিজে কখনো লিখবেন না; একটি বহুল ব্যবহৃত লাইব্রেরি ব্যবহার করুন।
আগে নীতি ঠিক করুন
প্রম্পট করার আগে এগুলো উত্তর দিন, কারণ এগুলো ডিজাইন বদলে দেয়:
- কাকে এটি ব্যবহার করতে হবে? সবার জন্য ঐচ্ছিক, অ্যাডমিন ও কর্মীদের জন্য বাধ্যতামূলক, নাকি সবার জন্য বাধ্যতামূলক। অ্যাডমিন ক্ষমতা আছে এমন যেকোনো কারও জন্য বাধ্যতামূলক করা সাধারণ। দেখুন রোল-ভিত্তিক অ্যাক্সেস কন্ট্রোল।
- ব্যবহারকারীরা কত ঘন ঘন কোড আবার লিখবেন? প্রতি লগইনে, নাকি ৩০ দিনের জন্য প্রতি ডিভাইসে একবার ("এই ডিভাইস মনে রাখো")।
- কোন কাজে নতুন যাচাই দরকার? ইমেইল বদলানো, পেমেন্টের তথ্য, বা 2FA বন্ধ করা — এগুলো ভালো প্রার্থী। একে বলে step-up authentication।
- ফোন হারানোর প্রক্রিয়া কী? রিকভারি কোড, আর আপনি যে ম্যানুয়াল ফ্যালব্যাক চালাতে রাজি।
ধাপে ধাপে: নিজের লগইনে TOTP 2FA
১. সঠিক ফিল্ডগুলো সংরক্ষণ করুন
প্রতিটি ব্যবহারকারীর লাগে: 2FA চালু আছে কি না, TOTP সিক্রেট (বিশ্রামে এনক্রিপ্টেড, সাধারণ টেক্সটে নয়), কখন চালু হয়েছিল, এবং রিকভারি কোডের একটি তালিকা যা হ্যাশ করা — পাসওয়ার্ডের মতো। ব্যর্থ চেষ্টা গোনার একটি জায়গাও যোগ করুন।
২. নথিভুক্তি
- ব্যবহারকারী Settings খোলেন এবং টু-ফ্যাক্টর অথেন্টিকেশন চালু করুন ক্লিক করেন।
- সার্ভার একটি নতুন সিক্রেট তৈরি করে QR কোড হিসেবে ফেরত দেয়, পাশাপাশি যারা স্ক্যান করতে পারেন না তাদের জন্য টেক্সট রূপও।
- ব্যবহারকারী একটি অথেন্টিকেটর অ্যাপে স্ক্যান করে বর্তমান কোডটি টাইপ করেন।
- সার্ভার কোডটি যাচাই করে। শুধু সঠিক হলে সিক্রেট সংরক্ষণ করে এবং 2FA চালু চিহ্নিত করে।
- অ্যাপ আট-দশটি রিকভারি কোড একবার দেখায় এবং ব্যবহারকারীকে সংরক্ষণ করতে বলে।
ধাপ ৪ গুরুত্বপূর্ণ: একটি কোড নিশ্চিত হওয়ার আগে 2FA চালু করলে যার স্ক্যান ব্যর্থ হয়েছে তাদের পরের লগইনে লকআউট হয়ে যায়।
৩. দ্বিতীয় ধাপসহ লগইন
- ব্যবহারকারী ইমেইল ও পাসওয়ার্ড দেন। সার্ভার সেগুলো যাচাই করে।
- 2FA চালু থাকলে সার্ভার একটি পূর্ণ সেশন তৈরি করে না। বরং একটি স্বল্পস্থায়ী "দ্বিতীয় ফ্যাক্টর অপেক্ষায়" অবস্থা তৈরি করে।
- অ্যাপ কোড স্ক্রিন দেখায়। সার্ভার কোড যাচাই করে, ঘড়ির সামান্য বিচ্যুতির জন্য একটি ছোট সীমা দিয়ে।
- তখনই, এবং শুধু তখনই, সার্ভার প্রকৃত সেশন দেয়।
প্রতিটি সুরক্ষিত রাউট ও API এন্ডপয়েন্টকে অপেক্ষার অবস্থা প্রত্যাখ্যান করতে হবে। শুধু ব্রাউজারে পেজ লুকানো 2FA স্ক্রিনকে কেউ এড়িয়ে যেতে পারে, সরাসরি API কল করে।
৪. সীমা ও সতর্কতা
ছয় অঙ্কের কোডে এক মিলিয়ন সম্ভাবনা থাকে, যা সীমা ছাড়া অনুমান করা যায়। কোড চেষ্টার সংখ্যা সীমিত করুন, বারবার ব্যর্থতার পর কিছু সময়ের জন্য দ্বিতীয় ধাপ লক করুন, আর ব্যবহারকারীকে ইমেইল করুন। দেখুন রেট লিমিটিং ও আপনার অ্যাপ থেকে ইমেইল পাঠানো।
৫. রিকভারি ও বন্ধ করা
- একটি রিকভারি কোড একবার কাজ করে, তারপর মুছে যায়।
- 2FA বন্ধ করতে পাসওয়ার্ড এবং একটি বর্তমান কোড বা রিকভারি কোড লাগবে।
- রিকভারি কোড নতুন করে তৈরি করলে পুরোনো সেটটি অকার্যকর হয়।
- 2FA চালু বা বন্ধ হলেই ব্যবহারকারীকে ইমেইল করুন।
আপনার AI বিল্ডারকে দেওয়ার প্রম্পট
মূল প্রবাহ দিয়ে শুরু করুন:
আমাদের বিদ্যমান ইমেইল ও পাসওয়ার্ড লগইনে অথেন্টিকেটর অ্যাপ (TOTP) ব্যবহার করে ঐচ্ছিক টু-ফ্যাক্টর অথেন্টিকেশন যোগ করো। একটি পরিচিত TOTP লাইব্রেরি ব্যবহার করো, অ্যালগরিদম নিজে লিখো না। Settings-এ একটি QR কোড ও টেক্সট সিক্রেট দেখাও, এবং ব্যবহারকারী একটি বৈধ কোড লেখার পরেই 2FA চালু করো। সিক্রেট এনক্রিপ্টেড রাখো এবং সেটআপের পর আর কখনো দেখিও না। ১০টি একবার-ব্যবহারযোগ্য রিকভারি কোড একবার দেখাও এবং হ্যাশ করে সংরক্ষণ করো।
তারপর প্রয়োগ, যেখানে তৈরি করা কোড সবচেয়ে বেশি ঘাটতি রাখে:
সার্ভারে 2FA প্রয়োগ করো। সঠিক পাসওয়ার্ডের পর 2FA চালু থাকা ব্যবহারকারীরা একটি স্বল্পস্থায়ী অপেক্ষার অবস্থা পাবে, পূর্ণ সেশন নয়। প্রতিটি সুরক্ষিত পেজ ও API রুট এই অপেক্ষার অবস্থা প্রত্যাখ্যান করবে। কোড চেষ্টা ৫টিতে সীমিত করো, তারপর দ্বিতীয় ধাপ ১৫ মিনিটের জন্য লক করো এবং ব্যবহারকারীকে ইমেইল করো।
তারপর নীতি:
অ্যাডমিন অ্যাকাউন্টের জন্য 2FA বাধ্যতামূলক করো: 2FA ছাড়া অ্যাডমিন সেটআপে যায় এবং সেটি শেষ না হওয়া পর্যন্ত ড্যাশবোর্ডে ঢুকতে পারে না। 2FA বন্ধ করতে বা অ্যাকাউন্টের ইমেইল বদলাতে পাসওয়ার্ড ও একটি বর্তমান কোড লাগাও। 2FA চালু বা বন্ধ হলে ব্যবহারকারীকে ইমেইল করো।
শেষে এজেন্টকে বলুন কী বানিয়েছে তা ব্যাখ্যা করতে:
প্রতিটি রাউট তালিকা করো যা একটি সম্পূর্ণ দ্বিতীয় ফ্যাক্টর যাচাই করে, TOTP সিক্রেট ও রিকভারি কোড কোথায় সংরক্ষিত, এবং সেগুলো কীভাবে সুরক্ষিত।
সাধারণ ভুল
- পাসওয়ার্ডের পরেই সেশন দেওয়া। সবচেয়ে গুরুতর বাগ। কোড যাচাইয়ের আগে যদি পূর্ণ সেশন থাকে, 2FA শুধু সাজসজ্জা। শুধু পাসওয়ার্ড ধাপের পর একটি সুরক্ষিত API কল করে পরীক্ষা করুন।
- কোনো চেষ্টার সীমা না থাকা। সীমাহীন অনুমান কোডটিকে ব্রুট-ফোর্স করা যায় করে তোলে।
- সাধারণ টেক্সটে সিক্রেট বা রিকভারি কোড। ডাটাবেস ফাঁস হলে সবার দ্বিতীয় ফ্যাক্টর হাতে চলে যায়।
- যাচাইয়ের আগে চালু করা। যারা ভুলভাবে স্ক্যান করেছে তারা পরের লগইনে লকআউট হয়ে যায়।
- কোনো রিকভারি পথ না থাকা। প্রতিটি হারানো ফোন একটি সাপোর্ট টিকিট বা হারানো গ্রাহক হয়ে যায়।
- সহজে বন্ধ করা যায়। চুরি হওয়া সেশন যদি কোড ছাড়া 2FA বন্ধ করতে পারে, তাহলে সুরক্ষা শেষ।
- লগে কোড। নিশ্চিত করুন কোড ও সিক্রেট কখনো সার্ভার লগ বা এরর মেসেজে আসে না।
- শুধু লগইন পেজে যাচাই। পাসওয়ার্ড রিসেট, "ম্যাজিক লিংক" সাইন-ইন এবং যেকোনো সোশ্যাল লগইনকেও 2FA মানতে হবে, নইলে সেগুলো এড়ানোর পথ হয়ে যায়।
পরীক্ষার চেকলিস্ট
- নথিভুক্তি শুধু একটি বৈধ কোডের পরেই সম্পন্ন হয়
- সঠিক পাসওয়ার্ড কিন্তু কোড ছাড়া লগইনে কোনো সুরক্ষিত পেজ বা API-তে অ্যাক্সেস নেই
- ভুল কোড প্রত্যাখ্যাত হয়; বারবার ভুল কোডে লকআউট ও ইমেইল ঘটে
- কয়েক মিনিট আগের কোড প্রত্যাখ্যাত হয়
- প্রতিটি রিকভারি কোড ঠিক একবার কাজ করে
- 2FA বন্ধ করতে পাসওয়ার্ড ও একটি বর্তমান কোড লাগে
- পাসওয়ার্ড রিসেট 2FA এড়াতে পারে না
- অ্যাডমিন যাদের 2FA নেই তারা অ্যাডমিন পেজে যেতে পারে না (যদি বাধ্যতামূলক হয়)
- সিক্রেট ও রিকভারি কোড ডাটাবেসে এনক্রিপ্টেড বা হ্যাশ করা
- লগে কোনো কোড বা সিক্রেট আসে না
লঞ্চের আগে AI দিয়ে বানানো অ্যাপের নিরাপত্তা চেকলিস্ট-ও পুরোপুরি চালান।
Mythex-এ 2FA যোগ করা
Mythex আপনার অ্যাপের শেষ ব্যবহারকারীদের জন্য কোনো বিল্ট-ইন লগইন সিস্টেম দেয় না, তাই 2FA আপনি যে অথ পদ্ধতি বেছেছেন তার অংশ: নিজের ইমেইল-ও-পাসওয়ার্ড লগইন যা প্রজেক্টের ডাটাবেস ব্যবহার করে, অথবা মাল্টি-ফ্যাক্টর সমর্থনসহ একটি হোস্টেড প্রোভাইডার। চ্যাটে ওপরের মতো প্রম্পট দিয়ে আপনি বর্ণনা করেন কী চান, এবং যেকোনো প্রোভাইডার কী প্রজেক্ট সিক্রেটে যায় (/secrets, প্রজেক্ট সেটিংস, বা এজেন্ট যে সিক্রেট কার্ড দেখায় তার মাধ্যমে), চ্যাট বক্সে নয়। ডক্সের অ্যাপে লগইন যোগ করুন রেসিপিতে একটি স্টার্টার প্রম্পট আছে, আর আপনার তৈরি অ্যাপের নিরাপত্তা কী ও অনুমতি ঘিরে অভ্যাসগুলো ব্যাখ্যা করে। এজেন্ট কাজ শেষ করার পর, পাবলিশ করার আগে Preview-তে চেকলিস্টের প্রতিটি আইটেম পরীক্ষা করুন।
প্রশ্নোত্তর
অ্যাপে টু-ফ্যাক্টর অথেন্টিকেশন যোগ করার সবচেয়ে সহজ উপায় কী?
যদি একটি হোস্টেড অথ প্রোভাইডার ব্যবহার করেন, তার বিল্ট-ইন মাল্টি-ফ্যাক্টর অপশন চালু করুন; সাধারণত এতে সবচেয়ে কম কোড লাগে। নিজের লগইন চালালে রিকভারি কোড ও সার্ভার-সাইড যাচাইসহ একটি পরিচিত লাইব্রেরি দিয়ে অথেন্টিকেটর-অ্যাপের কোড (TOTP) যোগ করুন।
2FA-এর জন্য কি SMS কোড ব্যবহার করা উচিত?
কোনো দ্বিতীয় ফ্যাক্টর না থাকার চেয়ে SMS ভালো, কিন্তু এটি সাধারণ বিকল্পগুলোর মধ্যে সবচেয়ে দুর্বল, কারণ SIM swapping-এর মাধ্যমে টেক্সট অন্যদিকে ঘুরে যেতে পারে এবং কোড ফিশিং করা যায়। অথেন্টিকেটর-অ্যাপকে ডিফল্ট হিসেবে দিন, আর ব্যবহারকারীরা প্রস্তুত থাকলে পাসকি।
2FA যোগ করতে কি ডাটাবেস লাগে?
নিজের লগইন চালালে হ্যাঁ। প্রতি ব্যবহারকারীর 2FA সিক্রেট, 2FA চালু আছে কি না, এবং তার হ্যাশ করা রিকভারি কোড এমন কোথাও সংরক্ষণ করতে হবে যা আপনার সার্ভার যাচাই করতে পারে। একটি হোস্টেড অথ প্রোভাইডার এটি আপনার হয়ে সংরক্ষণ করে।
ব্যবহারকারী ফোন হারালে কী হবে?
তারা 2FA চালু করার সময় আপনি যে একবার-ব্যবহারযোগ্য রিকভারি কোডগুলো দেখিয়েছিলেন তার একটি দিয়ে সাইন ইন করে, তারপর নতুন ডিভাইসে আবার 2FA সেট করে। রিকভারি কোড না থাকলে আপনার একটি ম্যানুয়াল পরিচয় যাচাই দরকার, তাই লঞ্চের আগে সেই প্রক্রিয়া ঠিক করে নিন।