সেশনের হাইজ্যাকিং 100% রোধ করার কোনও উপায় নেই, তবে কিছু পদ্ধতির সাহায্যে আমরা আক্রমণকারীটির অধিবেশন হাইজ্যাক করার সময় হ্রাস করতে পারি।
সেশন হাইজিং প্রতিরোধের পদ্ধতি:
1 - সর্বদা এসএসএল শংসাপত্র সহ সেশন ব্যবহার করুন;
2 - কেবলমাত্র httponly সত্যে সেট করে সেশন কুকি প্রেরণ করুন (সেশন কুকিতে অ্যাক্সেস করার জন্য জাভাস্ক্রিপ্ট প্রতিরোধ করুন)
2 - লগইন এবং লগআউটে সেশন পুনর্জেট আইডি ব্যবহার করুন (দ্রষ্টব্য: প্রতিটি অনুরোধে সেশন পুনর্জন্মটি ব্যবহার করবেন না কারণ যদি আপনার একটানা এজাক্স অনুরোধ থাকে তবে আপনার একাধিক সেশন তৈরির সুযোগ রয়েছে))
3 - একটি সেশনের সময়সীমা নির্ধারণ করুন
4 - প্রতিটি অনুরোধে একটি ব্রাউজার ব্যবহারকারী এজেন্টকে request _SERVER ['HTTP_USER_AGENT'] এর সাথে একটি তুলনা করে একটি _S _SESSION ভেরিয়েবলে সঞ্চয় করুন
5 - একটি টোকেন কুকি সেট করুন এবং সেই কুকির মেয়াদোত্তীকরণের সময়টি 0 তে সেট করুন (ব্রাউজারটি বন্ধ না হওয়া পর্যন্ত)। প্রতিটি অনুরোধের জন্য কুকির মানটি পুনরায় তৈরি করুন ((এজাজার অনুরোধের জন্য টোকেন কুকিটি পুনরুত্পাদন করবেন না)। গো EX:
//set a token cookie if one not exist
if(!isset($_COOKIE['user_token'])){
//generate a random string for cookie value
$cookie_token = bin2hex(mcrypt_create_iv('16' , MCRYPT_DEV_URANDOM));
//set a session variable with that random string
$_SESSION['user_token'] = $cookie_token;
//set cookie with rand value
setcookie('user_token', $cookie_token , 0 , '/' , 'donategame.com' , true , true);
}
//set a sesison variable with request of www.example.com
if(!isset($_SESSION['request'])){
$_SESSION['request'] = -1;
}
//increment $_SESSION['request'] with 1 for each request at www.example.com
$_SESSION['request']++;
//verify if $_SESSION['user_token'] it's equal with $_COOKIE['user_token'] only for $_SESSION['request'] > 0
if($_SESSION['request'] > 0){
// if it's equal then regenerete value of token cookie if not then destroy_session
if($_SESSION['user_token'] === $_COOKIE['user_token']){
$cookie_token = bin2hex(mcrypt_create_iv('16' , MCRYPT_DEV_URANDOM));
$_SESSION['user_token'] = $cookie_token;
setcookie('user_token', $cookie_token , 0 , '/' , 'donategame.com' , true , true);
}else{
//code for session_destroy
}
}
//prevent session hijaking with browser user agent
if(!isset($_SESSION['user_agent'])){
$_SESSION['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
}
if($_SESSION['user_agent'] != $_SERVER['HTTP_USER_AGENT']){
die('session hijaking - user agent');
}
নোট: টোকেন কুকিটি এজাক্স অনুরোধ নোটের সাথে পুনরায় জেনারেট করবেন না: উপরের কোডটি একটি উদাহরণ। দ্রষ্টব্য: ব্যবহারকারীগণ যদি লগআউট করেন তবে কুকি টোকেনটি অবশ্যই সেশনের পাশাপাশি ধ্বংস করতে হবে
- - সেশন হাইজিং প্রতিরোধের জন্য ইউজার আইপি ব্যবহার করা ভাল না, কারণ কিছু ব্যবহারকারী প্রতিটি অনুরোধের সাথে আইপি পরিবর্তন করে। ভ্যালিড ব্যবহারকারীর প্রভাব
7 - ব্যক্তিগতভাবে আমি ডেটাবেজে সেশন ডেটা সঞ্চয় করি, আপনি কোন পদ্ধতি অবলম্বন করবেন এটি আপনার বিষয়
আপনি যদি আমার পদ্ধতির কোনও ভুল খুঁজে পান তবে দয়া করে আমাকে সংশোধন করুন। আপনার যদি সেশন হাইজাকিং প্রতিরোধের আরও উপায় থাকে তবে দয়া করে আমাকে বলুন।