Yii ফ্রেমওয়ার্কে Authentication এবং Rate Limiting দুটি গুরুত্বপূর্ণ বিষয়, যা অ্যাপ্লিকেশনের নিরাপত্তা এবং পারফরমেন্স বৃদ্ধিতে সাহায্য করে। Authentication ব্যবহারকারীর পরিচয় যাচাই করতে ব্যবহৃত হয়, আর Rate Limiting সিস্টেমে একাধিক রিকোয়েস্টের সীমাবদ্ধতা আরোপ করে অতিরিক্ত লোড এবং ডিডস (DDoS) আক্রমণ থেকে সুরক্ষা প্রদান করে।
১. Authentication (প্রমাণীকরণ)
Authentication হল একটি প্রক্রিয়া যা নিশ্চিত করে যে, সিস্টেমে প্রবেশ করা ব্যবহারকারী আসলেই সেই ব্যক্তি, যার জন্য অ্যাকাউন্ট তৈরি করা হয়েছে। Yii ফ্রেমওয়ার্কে সাধারণত Username-Password Authentication ব্যবহৃত হয়, তবে এটি OAuth, API টোকেন, এবং অন্যান্য আধুনিক প্রমাণীকরণ পদ্ধতির সমর্থনও দেয়।
১.১. Authentication কনফিগারেশন
Yii ফ্রেমওয়ার্কে IdentityInterface ব্যবহার করে প্রমাণীকরণের প্রক্রিয়া তৈরি করা হয়। একটি ব্যবহারকারী মডেল তৈরি করতে হবে যা IdentityInterface ইমপ্লিমেন্ট করে।
namespace app\models;
use yii\db\ActiveRecord;
use yii\web\IdentityInterface;
class User extends ActiveRecord implements IdentityInterface
{
public static function findIdentity($id)
{
return static::findOne($id);
}
public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne(['access_token' => $token]);
}
public static function findByUsername($username)
{
return static::findOne(['username' => $username]);
}
public function getId()
{
return $this->id;
}
public function getAuthKey()
{
return $this->auth_key;
}
public function validateAuthKey($authKey)
{
return $this->auth_key === $authKey;
}
public function validatePassword($password)
{
return password_verify($password, $this->password_hash);
}
}
১.২. Authentication ব্যবহার
প্রমাণীকরণ প্রক্রিয়া শুরু করতে, আপনি Yii-এর User কম্পোনেন্ট ব্যবহার করতে পারেন, যা ব্যবহারকারীর লগইন এবং লগআউট পরিচালনা করে।
if (Yii::$app->user->login($user)) {
// লগইন সফল হলে, হোমপেজে রিডাইরেক্ট
return $this->goHome();
}
Yii::$app->user->login() ব্যবহার করে আপনি একজন ব্যবহারকারীকে লগইন করতে পারেন, এবং Yii::$app->user->isGuest ব্যবহার করে যাচাই করতে পারেন যে, ব্যবহারকারী লগইন হয়েছে কিনা।
১.৩. Authentication এর সুবিধা
- নিরাপত্তা: সিস্টেমে শুধুমাত্র প্রমাণীকৃত ব্যবহারকারীরা প্রবেশ করতে পারে।
- ব্যবহারকারীর অধিকার: বিভিন্ন ধরনের ব্যবহারকারীর জন্য পৃথক পৃথক অধিকার নির্ধারণ করা যায় (যেমন অ্যাডমিন, মডারেটর, সাধারণ ব্যবহারকারী)।
২. Rate Limiting (রেট লিমিটিং)
Rate Limiting হল একটি প্রযুক্তি যা সিস্টেমের রিকোয়েস্টের সংখ্যা সীমাবদ্ধ করে, যাতে সার্ভার অতিরিক্ত লোড হতে না পারে। এটি বিশেষভাবে API এবং ওয়েব সার্ভিসে ব্যবহৃত হয়, যেখানে একাধিক ব্যবহারকারী একসাথে রিকোয়েস্ট পাঠায় এবং সিস্টেমের পারফরমেন্স হুমকির সম্মুখীন হতে পারে।
Yii ফ্রেমওয়ার্কে Rate Limiting সাধারণত Throttle বা RateLimit কম্পোনেন্ট ব্যবহার করে কনফিগার করা হয়।
২.১. Rate Limiting কনফিগারেশন
Yii ফ্রেমওয়ার্কে Rate Limiting কনফিগার করতে, yii\filters\RateLimit ফিল্টার ব্যবহার করা হয়। এই ফিল্টারটি রিকোয়েস্টের সংখ্যা সীমাবদ্ধ করে এবং নির্দিষ্ট সময় পর পর রিকোয়েস্টের নতুন রেট দেয়।
use yii\filters\RateLimit;
class SiteController extends \yii\web\Controller
{
public function behaviors()
{
return [
'rateLimit' => [
'class' => RateLimit::class,
'enableRateLimit' => true,
'rateLimit' => [60, 60], // প্রতি 60 সেকেন্ডে 60টি রিকোয়েস্ট
],
];
}
}
এই কনফিগারেশনে:
60, 60: প্রতি 60 সেকেন্ডে 60টি রিকোয়েস্ট অনুমোদিত।- আপনি যদি কোনো ভিন্ন রেট নির্ধারণ করতে চান, তাহলে এটি কাস্টমাইজ করতে পারেন।
২.২. Rate Limiting ব্যবহার
Rate Limiting ব্যবহার করার জন্য RateLimit ফিল্টারটি প্রয়োগ করতে হয়। এটি আপনার অ্যাপ্লিকেশনকে অতিরিক্ত রিকোয়েস্ট থেকে সুরক্ষা প্রদান করে।
public function actions()
{
return [
'index' => [
'class' => 'yii\rest\IndexAction',
'rateLimit' => [100, 60], // প্রতি মিনিটে 100টি রিকোয়েস্ট
],
];
}
২.৩. Rate Limiting এর সুবিধা
- পারফরমেন্স বৃদ্ধি: সার্ভারে অতিরিক্ত লোড না পড়ে, কারণ রিকোয়েস্টের সংখ্যা সীমাবদ্ধ করা হয়।
- নিরাপত্তা: Rate Limiting প্রয়োগের মাধ্যমে ডিডস (DDoS) আক্রমণ থেকে সুরক্ষা পাওয়া যায়।
- অতিরিক্ত ব্যবহারকারী রিকোয়েস্ট নিয়ন্ত্রণ: সীমিত সংখ্যক রিকোয়েস্ট অনুমোদন করে সিস্টেমে স্থিতিশীলতা বজায় রাখা যায়।
সারাংশ
Yii ফ্রেমওয়ার্কে Authentication এবং Rate Limiting দুটি গুরুত্বপূর্ণ ফিচার যা অ্যাপ্লিকেশনের নিরাপত্তা এবং পারফরমেন্স নিশ্চিত করতে সহায়ক।
- Authentication ব্যবহৃত হয় ব্যবহারকারীর পরিচয় যাচাইয়ের জন্য, যেখানে
IdentityInterfaceএর মাধ্যমে প্রমাণীকরণ সম্পন্ন হয়। - Rate Limiting সিস্টেমের রিকোয়েস্ট সংখ্যা সীমাবদ্ধ করে অতিরিক্ত লোড এবং নিরাপত্তা ঝুঁকি থেকে সুরক্ষা প্রদান করে।
এ দুটি প্রযুক্তি একত্রে ব্যবহৃত হলে অ্যাপ্লিকেশনটি আরও নিরাপদ, স্থিতিশীল এবং দ্রুত হবে।