session_regenerate_id()
পিএইচপি-তে আমি কখন এবং ফাংশনটি ব্যবহার করব ? আমি সবসময় ব্যবহার করার পরে এটি ব্যবহার করা উচিত session_start()
? আমি পড়েছি যে সেশন ফিক্সেশন প্রতিরোধের জন্য আমাকে এটি ব্যবহার করতে হবে, এটি কি একমাত্র কারণ?
session_regenerate_id()
পিএইচপি-তে আমি কখন এবং ফাংশনটি ব্যবহার করব ? আমি সবসময় ব্যবহার করার পরে এটি ব্যবহার করা উচিত session_start()
? আমি পড়েছি যে সেশন ফিক্সেশন প্রতিরোধের জন্য আমাকে এটি ব্যবহার করতে হবে, এটি কি একমাত্র কারণ?
উত্তর:
session_regenerate_id()
?ফাংশনটির নাম হিসাবে, এটি একটি ফাংশন যা বর্তমান সেশন আইডিটিকে নতুন দিয়ে প্রতিস্থাপন করবে এবং বর্তমান সেশনের তথ্য রাখবে।
এটি মূলত সেশন স্থিরকরণ আক্রমণ প্রতিরোধে সহায়তা করে। সেশন ফিক্সেশন আক্রমণগুলি যেখানে একটি দূষিত ব্যবহারকারী অন্য ব্যবহারকারীর সেশন আইডি (এসআইডি) ফিক্সেট (সেট) করার সিস্টেমে দুর্বলতা কাজে লাগানোর চেষ্টা করে। এটি করার মাধ্যমে, তারা আসল ব্যবহারকারী হিসাবে সম্পূর্ণ অ্যাক্সেস পাবেন এবং এমন কাজগুলি করতে সক্ষম হবেন যা অন্যথায় প্রমাণীকরণের প্রয়োজন হবে।
এই জাতীয় আক্রমণ প্রতিরোধ করতে, ব্যবহারকারী session_regenerate_id()
যখন সফলভাবে সাইন ইন করেন (বা প্রতিটি এক্স অনুরোধের জন্য) ব্যবহার করে একটি নতুন সেশন আইডি নির্ধারণ করুন । এখন কেবলমাত্র তার সেশন আইডি রয়েছে এবং আপনার পুরানো (স্থির) সেশন আইডি আর বৈধ নয়।
session_regenerate_id()
?যেহেতু নীচে দেওয়া মন্তব্যে সিহেমিয়ান ইশারা করে, সেশন আইডিটি কোনও প্রমাণীকরণের স্থিতিতে এবং কেবলমাত্র প্রমাণীকরণের ট্রানজিশনে পরিবর্তন করা উচিত।
আরও পড়া:
সেশন হাইজ্যাকিং এবং সেশন স্থিরকরণsession_regenerate_id()
বন্ধ করার জন্য আপনার ব্যবহার করা উচিত ।
থেকে এই Security.SE উত্তর :
সেশন হাইজ্যাকিং মানে সেশন কুকি চুরি করা। অন্যান্য কম্পিউটারগুলির সাথে কোনও স্থানীয় নেটওয়ার্ক ভাগ করে নেওয়ার সময় এটি সবচেয়ে সহজেই সম্পন্ন করা যায়। যেমন স্টারবাক্স এ উদাহরণ ... ওয়াই সেশন সহ একজন ব্যবহারকারী স্টারবাকসে জেমসের ওয়েবসাইটটি ব্রাউজ করছেন। আমি তাদের নেটওয়ার্ক ট্র্যাফিকের সাথে শুনছি, আমার ল্যাটকে চুমুক দিচ্ছি। আমি জেমসের ওয়েবসাইটের জন্য সেশনের ওয়াইয়ের কুকিগুলির সাথে ব্যবহার করি এবং সেগুলি ব্যবহার করার জন্য আমার ব্রাউজারটি সেট করেছি। এখন যখন আমি জেমসের সাইট, জেমসের সাইট অ্যাক্সেস করি।
এই ওয়েবপৃষ্ঠা থেকে :
সেশন ফিক্সেশন একটি আক্রমণ কৌশল যা ব্যবহারকারীর সেশন আইডিকে একটি সুস্পষ্ট মানকে বাধ্য করে। লক্ষ্য ওয়েবসাইটের কার্যকারিতার উপর নির্ভর করে সেশন আইডি মানটি "ঠিক" করতে বেশ কয়েকটি কৌশল ব্যবহার করা যেতে পারে। এই কৌশলগুলি ক্রস-সাইট স্ক্রিপ্টিং শোষণ থেকে শুরু করে এইচটিটিপি রিকুয়েস্টেশনগুলির সাথে ওয়েব সাইটে মরিচা পর্যন্ত রয়েছে। কোনও ব্যবহারকারীর সেশন আইডি স্থির হওয়ার পরে, আক্রমণকারী সেই ব্যবহারকারীটির লগইন হওয়ার জন্য অপেক্ষা করবে। একবার ব্যবহারকারী তা করলে, আক্রমণকারী একই অনলাইন পরিচয় ধরে নিতে পূর্বনির্ধারিত সেশন আইডি মানটি ব্যবহার করে।
কখন ব্যবহার করতে হবে
যখন ব্যবহারকারী কোনও গুরুত্বপূর্ণ ইনপুটগুলি সম্পাদনা / আপডেট করছেন (পাসওয়ার্ড, শংসাপত্রগুলি, ভুলে গেছেন পাসওয়ার্ড ইত্যাদি) যা সাইটের সুরক্ষা বা গোপনীয়তা নীতিতে আপস করতে পারে।
আরো দেখুন:
আমি মনে করি সেশন বিষের বিষয়টি বেশ ভালভাবে কভার করা হয়েছে।
"আমাকে কখন এটি ব্যবহার করা উচিত?" অংশ, পিছনে পদক্ষেপ এবং আপনার অ্যাপ্লিকেশনটি অধিবেশন দিয়ে কী করছে তা বিবেচনা করা গুরুত্বপূর্ণ অথবা, এটি অন্য কোনও উপায়ে বলতে গেলে, আপনার উত্তর দেওয়া দরকার এমন এটিই মূল সুরক্ষা প্রশ্ন
কেউ যদি এই অধিবেশন ধরে রাখে তবে তারা কী লাভ করবে?
আপনি যদি সমস্ত কিছু করেন তবে অন্যথায় বেনামে থাকা ডেটা (ব্যবহারকারী সাইটে আসে এবং আপনি এটি তাদের ভিজিটগুলি ট্র্যাক করতে ব্যবহার করেন) তবে সেশনটি নতুন করে তৈরি করার খুব কম কারণ আছে। হাইজ্যাকার সেই অধিবেশন দখল করে কোনও মূল্য অর্জন করতে পারে না।
তবে প্রচুর সাইট লগইন দেয়। একটি লগইন প্রচুর জিনিস পরিবর্তন করে। আমি আমার প্রোফাইল অ্যাক্সেস করতে পারেন। আমি সেটিংস পরিবর্তন করতে পারি। তাই কোনও হাইজ্যাকার আমার অ্যাকাউন্ট অ্যাক্সেসটি চাইবে, বিশেষত যদি সাধারণ এবং প্রশাসক ব্যবহারকারীরা লগইন পরিচালনা করতে সেশন ব্যবহার করেন। সুতরাং লোকেরা আমার সাইটে এসে লগ ইন করলে আমি অধিবেশনটি পুনরায় তৈরি করি। এটি সুরক্ষার অতিরিক্ত স্তর যুক্ত করে যে আমার সদ্য লগ ইন করা ব্যবহারকারী হাইজ্যাক হওয়ার সম্ভাবনা কম।
যে কোনও সময় আমরা একটি সেশনে সমালোচনামূলক ডেটা যুক্ত করি আপনার সেশন আইডিটি পুনরায় তৈরি করা বিবেচনা করা উচিত। যদি আপনাকে স্থির বিরুদ্ধে আপনার আবেদনটি শক্ত করতে হয় তবে একটি এলোমেলো পুনর্জন্ম কার্যকর হতে পারে তবে আমি প্রতিটি অনুরোধে পুনরুত্থান করতে চাই না। ডিফল্টরূপে পিএইচপি স্থানীয় ডিস্কে ফাইলগুলিতে সেশনগুলি সঞ্চয় করে। তুলনামূলকভাবে ছোট আক্রমণকারীর ভেক্টরটি হ্রাস করতে আপনি প্রচুর ডিস্ক আই / ও যুক্ত করছেন। আপনার যদি সত্যিই আরও সুরক্ষার প্রয়োজন হয় তবে আমি নিয়মিত ভিত্তিতে পুনরায় জন্মানোর সময় পুরো এইচটিটিপিএসে যাওয়ার পরামর্শ চাই (এইচটিটিপিএস স্থিরকরণটি খুব শক্ত করে তোলে)।
session_regenerate_id
?সেশন স্থিরকরণ রোধ করতে আপনার এটি ব্যবহার করা উচিত ।
session_regenerate_id
?যখনই প্রমাণীকরণের স্থিতি পরিবর্তন হয়, এটি মূলত লগইন এবং লগআউটে থাকে।
বব একটি পাবলিক কম্পিউটারে বসে এবং স্ট্যাকওভারফ্লো ডট কম ব্রাউজ করে তিনি সেখানে একটি নতুন অধিবেশন খুললেন। সেশন আইডি একটি কুকিতে সংরক্ষণ করা হয় ( httpOnly
জাভাস্ক্রিপ্টের মাধ্যমে অ্যাক্সেস রোধ করতে পতাকা সহ )। আসুন কল্পনা করুন স্ট্যাক ওভারফ্লোতে এইচটিটিপিএস সর্বদা সক্ষম ছিল এবং secure
কুকির জন্য পতাকা সেটও ছিল।
এখন কীভাবে আমরা অধিবেশন চুরি করতে পারি?
সেশন আইডি লিখেছেন বব। সে ব্রাউজারটি বন্ধ না করেই কম্পিউটারটি ছেড়ে দেয়। এখন অ্যালিস এই কম্পিউটারে এসে স্ট্যাক ওভারফ্লো ইতিমধ্যে লোড হওয়া দেখেছে। সে এখন লগ ইন করে।
এখন আমরা সেই পর্যায়ে এসেছি যেখানে আপনার ব্যবহার করা উচিত session_regenerate_id
। আপনি যদি লগইন করার সময় এখানে একটি নতুন সেশন আইডি তৈরি না করেন তবে বব পূর্ববর্তী অধিবেশনটি অ্যালিসের সেশনে অ্যাক্সেসের জন্য লিখে রেখেছিলেন এবং এটি এখন এলিস হিসাবে লগ ইন করতে পারবেন।
session_regenerate_id()
জারি করা অবধি , অ্যালিস ববসের অ্যাকাউন্টে অ্যাক্সেস করতে পারবে? এটা কি সঠিক?
আপনি এটি আরও ভাল সুরক্ষার জন্য ব্যবহার করতে পারেন।
এইভাবে আপনি এক সময় ব্যবহারের জন্য সেশন আইডি তৈরি করছেন।
আপনার ব্যবহারকারী সেশন আইডি = 3 বলতে দেয়
কিছু হ্যাকার আপনাকে ক্লায়েন্ট হ্যাক করেছে এবং তাদের সেশন_আইডি পেয়েছে। সুতরাং হ্যাকার তাদের সেশনটি ব্যবহার করতে সেই কুকিটি ব্যবহার করতে পারে।
আপনার মত কোড থাকলে
session_start();
session_regenerate_id();
আপনি যখন আপনার ওয়েবসাইটটি ব্যবহার করছেন তখন আপনি তাদের সেশনটি পরিবর্তন করতে পারবেন।
এখন হ্যাকার সেশনড = 3 পেয়েছে
তিনি আপনার ব্যবহারের পরে সেশন পরিবর্তন করেছেন
ব্যবহারকারীর সেশনেশন = 4 // লেখক রয়েছে
হ্যাকারের সেশন = 3 // নাল
তবে এখানে একটি সামান্য বিন্দু রয়েছে যে আপনি পুনর্জন্মের পদ্ধতিটি ব্যবহার করছেন এবং আপনার ক্লায়েন্ট কেবল ওয়েবসাইটটিতে লগইন করেছেন এবং ব্রাউজারটি বন্ধ করুন বা নিষ্ক্রিয় করেছেন। আপনার ক্লায়েন্টের সেশনড = 4 রয়েছে এবং যদি হ্যাকার সেই অংশে কুকি পেয়ে থাকে তবে তাদের একই সেশনেশন থাকবে।
উপরে বর্ণিত হিসাবে আপনি এইভাবে আপনার ক্লায়েন্টকে এক উপায়ে ডেটা সান্ফিং থেকে রক্ষা করতে পারেন, তবে এটি এখনও এই সমস্যার সমাধান করবে না।
আপনি যদি এসএসএল এনক ব্যবহার করেন তবে এটি বেশ সুরক্ষিত হবে।
খারাপ ইংরাজির জন্য দুঃখিত
একটি সাধারণ ব্যবহারের কেস:
// User visits a webshop
$shopcart = new Cart();
একটি সেশন শুরু হয় এবং ডাটাবেসে একটি এন্ট্রি করা হয়। ব্যবহারকারীর শপকার্টটি তার সেশন আইডি দ্বারা চিহ্নিত করা হয়।
// User orders items
$shopcart->add('123', 20);
$shopcart->add('124', 18);
$shopcart->add('127', 5);
যুক্ত প্রতিটি পণ্যের জন্য, আমার শপকার্টের টেবিলে একটি রেকর্ড তৈরি করা হয়। সেশন আইডি দ্বারা চিহ্নিত।
// User saves cart in order to use it later
$shopcart->save();
ব্যবহারকারী তার কার্ট সংরক্ষণ করার সিদ্ধান্ত নিয়েছে। এটি এখন তার ব্যবহারকারী আইডিতে সংযুক্ত করা হচ্ছে।
// Regenerate session id for user to be able to make a new cart
session_regenerate_id();
স্যাসিশন আইডিটি নতুনভাবে তৈরি করা হয়েছে এবং ব্যবহারকারী এখন অন্য শপকার্ট তৈরি শুরু করতে পারেন start