مشکل : بیرون افتادن یوزر از محیط کاربری پس از استفاده از session_regenerate_id

P.H.P

Member
سلام

شما session_regenerate_id رو در صفحه ای که مستقیم در حال لود هست قرار دادید

session_regenerate_id وقتی صورت میگیره session های قبلی از بین میرن و session های جدید اضافه میشن.

در واقع شما میتونید این session_regenerate_id رو برای logout استفاده کنید


موفق
 

P.H.P

Member
وقتی وارد صفحه میشید و session فعال باشه یک فایل به عنوان مثال به اسم sess_0ac0f600c09291c092ffaac3bd29e852 ایجاد میشه

و تمام session هایی که مقدار دریافت کردن در اون فایل قرار میگیره.

حالا اگر شما فقط از unset و destroy استفاده کنید در واقع محتوای فایل رو پاک کردید.
ولی اگر از session_regenerate_id هم استفاده کنید، علاوه بر محتوا فایل جدید دیگری ایجاد میکنید

فایل برای هر کاربر به صورت جداگانه ایجاد میشه


موفق
 

P.H.P

Member
برای جلوگیری از session hijacking میتونی از USER_AGENT, IP, Time و .. و ذخیره در database استفاده کنی و هر بار reload چک کنی

و اینکه بعد از چند ثانیه اگر refresh نکنی session از بین میره میتونه از session_start باشه که باید مجددا فراخوانی بشه

شما میتونی از تابع زیر برای این کار استفاده کنی

PHP:
function _RegenerateId()
{
    if (function_exists('session_regenerate_id'))
    {
        $old_session_id = session_id();
        session_regenerate_id();
        $new_session_id = session_id();
        session_id($old_session_id);
        session_destroy();
        $old_session = $_SESSION;
        session_id($new_session_id);
        session_start();
        $_SESSION = $old_session;
    }
}

موفق
 

P.H.P

Member
اما یک سوال : هنگام لاگین (ورود کاربر) یک سشن جدید ایجاد میشه . پس چه نیازی هست که در همون ابتدای ایجاد سشن ، اسم سشن رو عوض کنیم ؟؟؟

وقتی مدام در حال تغییر باشه session hijacking انجام نمیشه یا خیلی دشوارتر انجام میشه
باید اینو در نظر داشته باشید که از session_id هم استفاده کنید

و اینکه هنگتم خروج هم سشن رو از بین میبریم با unset , destroy . پس بااین کد اسم سشن رو چطور تغییر میدیم ؟؟ مگر سشن از بین نرفته ؟؟؟

وقتی destroy انجام میشه شاید نیازی به تغییر نام session نباشه ولی معمولا برای session hijacking نام فایل رو در نظر میگیرن، بهتره فایل تغییر کنه تا هنگام مقدار دهی مجدد
در همون فایل انجام نشه (این مورد در صورتی هست که مرورگر بسته نشده باشه)


موفق
 

جدیدترین ارسال ها

بالا