PDA

View Full Version : حرفه ای: ست کردن Session برای دامنه‌ای دیگر



uvdc1998
چهارشنبه 23 مرداد 1392, 10:02 صبح
با سلام:
لطفن راهنمایی بفرمائید که چطور می‌تونیم با تنظیمات session_set_cookie_params یا ini_set و بدون انتقال نام یا شناسه سشن یا استفاده از دیتابیس از اسکریپت دامنه اول سشنی رو برای دامنه دوم ست کنم؟

چیزی که نیاز دارم به ساده‌ترین شکل



<?php
// Domain 1
$_SESSION['test'] = 'test';
?>

<?php
// Domain 2
$test = $_SESSION['test'];
?>
چیزی که باید کار کنه ولی کار نمی‌کنه:



<?php
// Domain 1: localhost 1
session_set_cookie_params(0, '/', 'localhost2');
session_start();
$_SESSION['test'] = 'test';
?>

<?php
// Domain 2: localhost 2
session_start();
$test = $_SESSION['test'];
?>
متشکرم.

AliRezaPro
چهارشنبه 23 مرداد 1392, 12:18 عصر
کد رو بررسی کنید

$sessionId = // get session id from the database using the auth_token
session_destroy();
$this->getResponse()->setCookie('mycookie',null,time()-3600);

session_id($sessionId);

/** start new session * */
session_start();


$this->getResponse()->setCookie('mycookie', $sessionId,null,null,'mydomain');

uvdc1998
چهارشنبه 23 مرداد 1392, 12:31 عصر
کد رو بررسی کنید

$sessionId = // get session id from the database using the auth_token
session_destroy();
$this->getResponse()->setCookie('mycookie',null,time()-3600);

session_id($sessionId);

/** start new session * */
session_start();


$this->getResponse()->setCookie('mycookie', $sessionId,null,null,'mydomain');

کدی که گذاشتید ارتباطی به موضوع نداره، اما به هر حال ممنون...

WOLF_MEHRDAD
چهارشنبه 23 مرداد 1392, 12:54 عصر
درود بر شما

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

uvdc1998
چهارشنبه 23 مرداد 1392, 16:02 عصر
درود بر شما

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

پس پارامتر domain در تابع session_set_cookie_params و تابع setcookie چه کاربردی داره؟ اصلن مگر در یکی از حالت‌ها، Session از Cookie استفاده نمی‌کنه؟

mamali-mohammad
چهارشنبه 23 مرداد 1392, 16:11 عصر
params برای ارسال سشن در ساب دامنه ها هست نه دامنه های مجزا

uvdc1998
چهارشنبه 23 مرداد 1392, 16:28 عصر
params برای ارسال سشن در ساب دامنه ها هست نه دامنه های مجزا

احتمالن در اون صورت باید می‌شد subdomains و از نوع آرایه، نه domain و از نوع رشته!
هر چند ممکنه حق با شما باشه و از مفهوم کلمه domain استفاده کرده باشه.

titreaval
چهارشنبه 23 مرداد 1392, 18:59 عصر
من تا حالا زیاد وارد جزئیات مربوط به سیشن نشده ام
مطالب دوستان جالب و آموزنده بود
و چیز های جدیدی یاد گرفتم

اما نظر شخصی :

شما می توانید از فایل سیشن مشترک در هاستتون استفاده کنید
من تو لوکال چنین کاری کردم
با چند دامین
شما محتویات داخل فایل های ذخیره شده درون سیشن را ببینید چیزی از دامین نیست
و کوکی هم یک کد تصادفی غیره مشترک هست تا تداخل ایجاد نشه
پس می توان حتی به شکل اتفاقی از میون چند میلیون سایت در لحظه مجوز یکی از کاربران سایت باشما یکسان باشد

مثلا :
سیشن وابسته به کوکی , کوکی را در مرورگر x :
dfgdfg8f78g8f98g9dfgd9f89g8f9d8g9fd8
و همچنین فرد y :
dfgdfg8f78g8f98g9dfgd9f89g8f9d8g9fd8

و داده ی ذخیره شده درون آن که این کد به شکل لحظه ای به آن نسبت داده شده
و هر دو از یک cms و یک ایده برای مجوز صفحه استفاده شده
خب حالا :
موارد مجوز :
فایرفاکس 18 برای هر دو
تاریخ انقضا به شکل ثبت در سیشن نه استفاده از قابلیت سیشن به حالت ymiA
رمز یکسان هر دو
و مدیریت یکسان
هردو بر اساس یک روش رمز نگاری کردند
ای پی هر دو بعد از تغییر آی پی x و عدم خروج و تغییر سیشن یا حذف نشست

فرد y وارد اون سایت می تواند بشود ...

از هر 10 روز یکبار ممکن هست چنین اتفاقی که به هیچ وجه ممکن قابل پگیری نیست و مشکل امنیتی هم نداره ...
................................


در مرد بعد شما می توانید از یک جدول و یک دیتابیس اشتراکی استفاده کنید که هم سرعت بهینه میشه هم مجوز دارای 2 بعد میشه
یعنی با قرار دادن مجوز در سیشن و دیتابیس اعتبار به فرد داده شود
که اگر مشکلی از نظر امنیت سایت بود و رمز دارای 1 و 2 باشد نه به روش سیشن هکینگ و نه به روش Sql Injection و نه به روش دزدی نشست (xss) مورد هک قرار نخواهید گرفت
از ذخیره سیشن در دیتا بیس بسیار بهتر عمل می کند

:)

AliRezaPro
چهارشنبه 23 مرداد 1392, 19:55 عصر
کدی که گذاشتید ارتباطی به موضوع نداره، اما به هر حال ممنون...
دومین های شما داخل یک سرور هستند ؟ اگر آره که همون کد پست دوم جواب میده
پارامتر domain در session_set_cookie_params همونطور که دوستان گفتند برای :

Cookie domain, for example 'www.php.net'. To make cookies visible on all subdomains then the domain must be prefixed with a dot like '.php.net'.

unsecure ترن حالت درواقع همونی هست که بخواید Session ID رو تو URL بفرستید و از هر طرفی با استفاده از Session Handling Code اونو بررسی و استفاده کنید , درواقع دست ***ر رو برای Session Fixation Attack باز کردید

uvdc1998
چهارشنبه 23 مرداد 1392, 20:05 عصر
من تا حالا زیاد وارد جزئیات مربوط به سیشن نشده ام
مطالب دوستان جالب و آموزنده بود
و چیز های جدیدی یاد گرفتم

اما نظر شخصی :

...

:)

ممنون، اما توضیح دادم که نباید از این راه‌ها استفاده بشه.

uvdc1998
چهارشنبه 23 مرداد 1392, 20:09 عصر
دومین های شما داخل یک سرور هستند ؟ اگر آره که همون کد پست دوم جواب میده
پارامتر domain در session_set_cookie_params همونطور که دوستان گفتند برای :

Cookie domain, for example 'www.php.net'. To make cookies visible on all subdomains then the domain must be prefixed with a dot like '.php.net'.

unsecure ترن حالت درواقع همونی هست که بخواید Session ID رو تو URL بفرستید و از هر طرفی با استفاده از Session Handling Code اونو بررسی و استفاده کنید , درواقع دست ***ر رو برای Session Fixation Attack باز کردید

خیر، دامنه‌ها هیچ ارتباطی از نظر سرور و غیره ندارند.

ظاهرن نظر شما و mamali-mohammad درسته، متنی که گذاشتید رو هم قبلن مطالعه کردم، اولین خط‌ها داکیومنت هستش...

متشکرم...

AliRezaPro
چهارشنبه 23 مرداد 1392, 22:06 عصر
خیر، دامنه‌ها هیچ ارتباطی از نظر سرور و غیره ندارند.

ظاهرن نظر شما و mamali-mohammad درسته، متنی که گذاشتید رو هم قبلن مطالعه کردم، اولین خط‌ها داکیومنت هستش...

متشکرم...
پس اگر در یک سرور قرار ندارند کاری فکر نکنم بشه کرد(میشه اما بسیار خطر ناک) , اگر در یک سرور بودند میشد یک Directory مخصوص خودتون را درست کنید و با اون کار کنید

uvdc1998
چهارشنبه 23 مرداد 1392, 23:09 عصر
پس اگر در یک سرور قرار ندارند کاری فکر نکنم بشه کرد(میشه اما بسیار خطر ناک) , اگر در یک سرور بودند میشد یک Directory مخصوص خودتون را درست کنید و با اون کار کنید

بله، مجبورم یا از طریق curl سشن مورد نظر رو ست کنم یا بذارم توی دیتابیس بعد ریکوئست بفرستم محتوای سشن رو بگیرم...

abolfazl-z
چهارشنبه 23 مرداد 1392, 23:28 عصر
http://www.innovativephp.com/sharing-cookies-across-multiple-domains-hosted-on-different-servers/

uvdc1998
پنج شنبه 24 مرداد 1392, 21:36 عصر
http://www.innovativephp.com/sharing-cookies-across-multiple-domains-hosted-on-different-servers/

این چیزی که من نیاز دارم نیست...

mamali-mohammad
پنج شنبه 24 مرداد 1392, 22:36 عصر
بهتره سشن هارو با curl منتقل کنی
مثلا وقتی سشن روی این دامنه ساخته شده ، یه دستور به یه فایل از پیش تعیین شده میفرستی و یه سشن هم اونجا میسازه
محتوای سشن هارو هم باید با همون curl منتقل کنی

abolfazl-z
پنج شنبه 24 مرداد 1392, 23:30 عصر
امکان اش هست که بتونین پوشه سشن بین دو هاست رو با هم share کنید ؟

AliRezaPro
جمعه 25 مرداد 1392, 01:35 صبح
امکان اش هست که بتونین پوشه سشن بین دو هاست رو با هم share کنید ؟

اگر تو یک سرور باشند امکانش است

abolfazl-z
جمعه 25 مرداد 1392, 10:14 صبح
اگر تو یک سرور باشند امکانش است

آره ولی من از پشتیبانی هاستم پرسیدم میگن نمیشه بین دو سرور.

ولی فکر کنم اگر هر دو سرور vps باشن میشه (اون وقت میشه همین سیستم های معمولی)
ولی یک امکان دیگر به نام Access Web Disk تو cpanel وجود دارد که اگر یکی از سرور ها vps باشه میشه انجام داد.میشه با اون سروری که vps هست به Web Disk هاست وصل شیم ولی نمیدونم که آیا این ارتباط ماندگار هست یا خیر ؟ و یا اصلا امنیتی دارد یا خیر ؟


آیا سرور هاتون vps هستند؟