OAuth 2.0 এর মাধ্যমে নিরাপদ অথেনটিকেশন এবং অথোরাইজেশন সুবিধা প্রদান করা হলেও, এটি কিছু নিরাপত্তা ঝুঁকির সম্মুখীন হতে পারে, যেমন Token Hijacking (টোকেন হাইজ্যাকিং) এবং CSRF (Cross-Site Request Forgery) আক্রমণ। নিচে এসব আক্রমণ এবং তাদের প্রতিরোধের উপায় নিয়ে বিস্তারিত আলোচনা করা হলো।
1. Token Hijacking (টোকেন হাইজ্যাকিং)
Token Hijacking হল একটি নিরাপত্তা আক্রমণ যেখানে একটি আক্রমণকারী বৈধ Access Token চুরি করে এবং তার মাধ্যমে ব্যবহারকারীর নাম এবং তথ্য অ্যাক্সেস করতে সক্ষম হয়। এটি সাধারণত তখন ঘটে যখন একটি অ্যাক্সেস টোকেন সুরক্ষিতভাবে সংরক্ষিত না থাকে অথবা সঠিকভাবে ট্রান্সমিট না হয়।
Token Hijacking এর ঝুঁকি:
- যদি Access Token সঠিকভাবে এনক্রিপ্ট না করা হয় অথবা সুরক্ষিত সংরক্ষণ না করা হয়, তাহলে এটি চুরি হতে পারে।
- Token যদি ব্রাউজারের ইউআরএল বা লোকাল স্টোরেজে সরাসরি রেখে দেওয়া হয়, তাহলে এটি সহজেই চুরি হয়ে যেতে পারে।
- যদি টোকেনটি HTTP প্রোটোকল ব্যবহার করে পাঠানো হয় (যা এনক্রিপ্ট করা না থাকে), তাহলে এটি Man-in-the-Middle (MITM) আক্রমণের শিকার হতে পারে।
Token Hijacking প্রতিরোধের উপায়:
- HTTPS ব্যবহার করুন:
সব ধরনের Access Token এবং Refresh Token সুরক্ষিতভাবে পাঠানোর জন্য HTTPS ব্যবহৃত হতে হবে। এটি নিরাপদভাবে ডেটা ট্রান্সমিট করতে সাহায্য করে এবং MITM আক্রমণ থেকে সুরক্ষা প্রদান করে। - Token কে Secure Storage-এ রাখুন:
অ্যাপ্লিকেশনগুলি Access Token এবং Refresh Token ব্রাউজার কুকি বা লোকাল স্টোরেজে না রেখে Secure Storage (যেমন, HTTPOnly Cookies) এ রাখতে হবে, যাতে এগুলো স্ক্রিপ্ট বা আক্রমণকারীদের দ্বারা অ্যাক্সেস করা না যায়। - Token Expiration এবং Rotation:
Access Token গুলি short-lived হতে হবে, অর্থাৎ কম সময়ের জন্য বৈধ থাকবে। এছাড়াও, Refresh Token এর জন্য একটি নিরাপদ rotation mechanism স্থাপন করতে হবে, যাতে একটি টোকেন চুরি হলে সেটা দীর্ঘসময় ব্যবহার করা না যায়। - Token Scopes ব্যবহার করুন:
অ্যাপ্লিকেশনটির Access Token এর জন্য সুনির্দিষ্ট scopes (যেমন, পড়ার অনুমতি, লেখার অনুমতি) নির্ধারণ করুন, যাতে আক্রমণকারী শুধুমাত্র নির্দিষ্ট তথ্য অ্যাক্সেস করতে পারে।
2. CSRF (Cross-Site Request Forgery) আক্রমণ
CSRF আক্রমণ হল একটি ধরনের আক্রমণ যেখানে আক্রমণকারী ব্যবহারকারীর নাম এবং অনুমতির মাধ্যমে একটি অনৈতিক রিকোয়েস্ট তৈরি করে, যখন ব্যবহারকারী একটি ওয়েব অ্যাপ্লিকেশনে লগ ইন অবস্থায় থাকে। এটি তখন ঘটে যখন একটি ওয়েব পেজ ব্যবহারকারীকে ভুল বা অনৈতিক HTTP রিকোয়েস্ট তৈরি করতে বাধ্য করে (যেমন, একটি ফর্ম সাবমিট করা)।
OAuth 2.0 এর প্রেক্ষাপটে, CSRF আক্রমণ সাধারণত তখন হতে পারে যখন Authorization Code বা Access Token ট্রান্সমিট করা হয় এবং আক্রমণকারী ব্যবহারকারীকে ধোঁকায় ফেলতে পারে।
CSRF আক্রমণের ঝুঁকি:
- আক্রমণকারী যদি ব্যবহারকারীকে জোরপূর্বক অনুরোধ পাঠাতে সক্ষম হয় (যেমন, পেজ লোডে একটি ফর্ম সাবমিট করা), তবে তারা ঐ ব্যবহারকারীর অনুমতির মাধ্যমে OAuth বা অন্য যেকোনো State-changing অপারেশন করতে পারে।
CSRF আক্রমণ প্রতিরোধের উপায়:
State Parameter ব্যবহার করুন:
OAuth 2.0 এর Authorization Request-এ একটি state parameter ব্যবহার করা উচিত। এই state মানটি সাধারণত একটি র্যান্ডম স্ট্রিং হয়, যা Authorization Response-এও পাঠানো হয়। এটি নিশ্চিত করে যে রিকোয়েস্ট এবং রেসপন্সটি মিলেছে এবং তৃতীয় পক্ষ থেকে এটি পরিবর্তন করা সম্ভব নয়।উদাহরণ:
https://authorization-server.com/auth? response_type=code& client_id=your_client_id& redirect_uri=https://yourapp.com/callback& state=random_state_value- Double Submit Cookie:
Double Submit Cookie একটি নিরাপত্তা পদ্ধতি যেখানে CSRF প্রতিরোধের জন্য CSRF token কুকি এবং রিকোয়েস্ট হেডারে পাঠানো হয়। এই টোকেনটি নিশ্চিত করে যে রিকোয়েস্টটি ব্যবহারকারীর পক্ষ থেকে আসছে এবং কোনো তৃতীয় পক্ষ সেটি প্রেরণ করতে পারবে না। SameSite Cookie Attribute:
SameSite কুকি অ্যাট্রিবিউটের মাধ্যমে, ব্রাউজারকে নির্দেশ দেওয়া যায় যে কুকি শুধুমাত্র একই সাইটে রিকোয়েস্ট পাঠানোর সময় ব্যবহার করা হবে। এটি একটি সুরক্ষা বৈশিষ্ট্য যা Cross-Site রিকোয়েস্টগুলোকে আটকায়।উদাহরণ:
Set-Cookie: session_id=abc123; SameSite=Strict;- CSRF Token Validation:
ওয়েব অ্যাপ্লিকেশনে CSRF token চালু করে, আপনি ব্যবহারকারী এবং সার্ভারের মধ্যে ইনপুট ভ্যালিডেশন করতে পারেন। প্রতিটি ফর্মের জন্য একটি ইউনিক CSRF token তৈরি করুন এবং সেগুলো নিশ্চিত করুন যে সেগুলো সঠিকভাবে ভ্যালিডেট করা হচ্ছে।
সারাংশ
- Token Hijacking: Access Token চুরি হওয়ার ঝুঁকি থেকে রক্ষা পেতে HTTPS ব্যবহার, সুরক্ষিত স্টোরেজ, টোকেন এক্সপাইরি এবং স্কোপস সেটিং গুরুত্বপূর্ণ। এটি টোকেনের নিরাপত্তা নিশ্চিত করে।
- CSRF আক্রমণ: CSRF আক্রমণ প্রতিরোধের জন্য state parameter, Double Submit Cookie, এবং SameSite cookie attribute ব্যবহার গুরুত্বপূর্ণ। এগুলি আক্রমণকারীকে Cross-Site রিকোয়েস্ট পাঠানোর থেকে বিরত রাখে।
উপযুক্ত নিরাপত্তা কৌশল ব্যবহার করে আপনি OAuth 2.0-এর মাধ্যমে সুরক্ষিত অথেনটিকেশন এবং অথোরাইজেশন ব্যবস্থা তৈরি করতে পারেন, এবং Token Hijacking ও CSRF আক্রমণ প্রতিরোধ করতে সক্ষম হবেন।
Read more