رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده بیش از حد session ها
#1
سلام و خسته نباشید
یه سوال خیلی وقته که ذهنمو درگیر کرده.
من تازگی ها بیش از حد از سشن ها استفاده میکنم.
حالا خواستم ببینم این کار ایراد داره یا نه.
سشن ها امنیت بالایی دارن به همین خاطر.
اطلاعات مهم رو تو سشن ها نگه میدارم
مرسی
پاسخ
تشکر شده توسط:
#2
منظورتون از بیش از حد چیه؟ چه چیزهایی رو توی سشن میگذارین؟
پاسخ
تشکر شده توسط:
#3
سلام
ی پروژه ی آموزشی مینویسم که تو اون.
clas_id , user_id , pay_id ,page
رو توی سشن میزارم و میخوام کاربر به اونا دسترسی نداشته باشه و فقط خودم در سمت سرور بتونم از اونا خبر داشته باشم.
هر کدوم از متغیر های بالا عدد هستند مثلا clas_id یک عدد هستش مثل 14
فقط page یک متن 100 کاراکتری هستش.
مگه سشن هم مثل سایر متغیر ها نیستش.

و سوال دیگه که میخوام بپرسم
با چ متغیری میشه زمان سشن هارو افزایش داد؟

مرسی
پاسخ
تشکر شده توسط:
#4
سشن هم مثل متغیر عادیه. فقط تا وقتی session_start رو صدا نزدین، توی RAM نیست و توی دیسک ذخیره میشه. این چیزایی که دارین ذخیره میکنید، موارد زیادی نیستن.
باید طول عمر کوکی سشن رو افزایش بدین. توی تنظیمات PHP دنبال session.cookie_lifetime بگردین.
پاسخ
تشکر شده توسط: YN97
#5
آیا برای افزایش طول عمر سشن تابعی وجود داره.
خیلی ممنون
پاسخ
تشکر شده توسط:
#6
مستقیماً نه ولی با دستور session_set_cookie_params میتونید پارامترهای کوکی مربوط به سشن رو تنظیم کنید.
پاسخ
تشکر شده توسط:
#7
سلام و خسته نباشید
به این سایت ی نگا بندازید.
http://www.zncms.ir
به بخش ثبت نام این سایت برید
ثبت نام این سایت از دو بخش تشکیل شده است
بخش اول
و بخش دوم
من اطلاعات بخش اول را در سشن ذخیره میکنم و نگه میدارم و در نتیجه در صفحه دوم اطلاعات را از سشن ها تحویل میگیرم و باهم در جدول ذخیره میکنم.
خواستم ببینم آیا این اطلاعات برای ذخیره در سشن زیاد هستن.
به این آدرس برید:
http://www.zncms.ir/insert
این مرحله ی اول هستش(من اطلاعات این صفحه رو در سش ذخیره میکنم.)
خیلی ممنون
پاسخ
تشکر شده توسط:
#8
نه چیز خاصی نیست نگران نباشین. خیلی از سایتها برای ثبت نام چند مرحله ای از این روش استفاده میکنن. یک راه دیگه، ایجاد یک جدول برای ثبت نامهای موقت توی دیتابیسه. هرچی کاربر وارد میکنه توی رکوردش ثبت کنید و فقط شماره رکورد جدول موقت رو توی سشن بگذارین. وقتی ثبت نام کامل شد به جدول اصلی منتقل کنید. یه فیلد برای زمان هم بگذارین تا با کمک اون، هر ثبت نامی که از مدت مشخصی بیشتر طول کشید و به سرانجام نرسید رو از جدول موقت حذف کنید.
پاسخ
تشکر شده توسط:
#9
سلام و خسته نباشید به دوستان عزیز
ی سوالی واسم پبش اومده.
آیا سشن همان کوکی است؟
آخه تو ی سایتی خوندم که اگه کاربر کوکی رو توی مرورگر غیر فعال کنه دیگه کسی نمیتونه کوچی ایجاد کنه و به اون دسترسی داشته باشه؟
حالا خواستم ببینم چیکار کنم که سشن به کوکی دسترسی نداشته باشه؟
مرسی
پاسخ
تشکر شده توسط:
#10
سلام و خسته نباشید
به این تابع ی نگا بندازید.
session_save_path
کسی تا به حال با این تابع کار کرده?
من تو خود سایت php اینا رو دیدم ولی
session_save_path('/home/example.com/sessions');
ini_set('session.gc_probability', 1);
ی سوالی واسم پیش اومده:
آیا سشن داخل خود پروژه ذخیره میشه یا در جای دیگه ای از هاست ذخیره میشه؟
من آدرس رو چطوری بهش بدم؟
مثال اول
http://www.azarsang.com/sessin/
یا
به این صورت
home/public_html/sessin/

میشه ی کوچولو راهنمایی کنید.
مرسی
پاسخ
تشکر شده توسط:
#11
کوکی همون سشن نیست. کوکی سمت کلاینته و سشن سمت سرور ولی سشن برای اینکه درست کار کنه، باید Session ID توی سیستم کلاینت موجود باشه و توی هر درخواست برای سرور ارسال بشه (به اسم PHPSESSID). اگه کاربر کوکی رو غیرفعال کنه، معمولاً کوکی بعد از بسته شدن مرورگر از بین میره و معناش این نیست که اصلاً کوکی ساخته نمیشه ولی اگه کلاً ساخته نشه هم درصورتی که توی تنظیمات PHP گزینه trans_sid فعال باشه (پیشفرض)، موقعی که لینکی ساخته میشه بطور خودکار PHPSESSID به Query String اضافه میشه و اگه فرم باشه، یه عنصر مخفی توی فرم با نام PHPSESSID و با مقدار Session ID اضافه میشه و اگه این گزینه توی تنظیمات غیرفعال باشه، باید خودتون زحمت این کار رو بکشین. بهرحال وجود Session ID برای کارکرد صحیح سشن لازمه چون باید سرور بفهمه از بین چندین فایل سشن که داره، کدوم یکی متعلق به این کاربری هست که داره درخواست میده.

معمولاً مسیر ذخیره سازی سشن tmp/ هست ولی میتونید با تابعی که گفتین، مسیرش رو عوض کنید. باید مسیر فیزیکی بدین نه نشانی اینترنتی (URL) یعنی گزینه دومی که نوشتین درسته. البته مسیر شامل اسم کاربرتون هم هست (معمولاً همونی که توی کنترل پانل هاست باهاش لاگین میکنید). برای مثال:

home/azarsang/session/

که البته باید مجوز نوشتن رو به این پوشه بدین و ترجیحاً همونطور که توی مثال بالا گفتم، توی پوشه public_html نگذارین تا دسترسی Global بهش کسی ازطریق وب نداشته باشه.
پاسخ
تشکر شده توسط:
#12
خوب من به این شکل تنظیم کرده ام
ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));
یه پوشه session در خارج از public  و در کنارش به حالت 777
آیا درست تنظیم کرده ام؟ بعد از هر لاگین این پوشه رو چک می کنم اما فایل برای سشن نمی تونم توش پیدا کنم کجای کار اشکال داره؟
پاسخ
تشکر شده توسط:
#13
بهتره توی php.ini تغییر رو ایجاد کنید. ضمناً برا ی اینکه کار کنه هم باید مسیر ذخیره سازی سشن رو قبل از صدا زدن session_start اصلاح کنید.
پاسخ
تشکر شده توسط:
#14
(15-05-1394، 04:05 ب.ظ)ADMIN نوشته: کوکی همون سشن نیست. کوکی سمت کلاینته و سشن سمت سرور ولی سشن برای اینکه درست کار کنه، باید Session ID توی سیستم کلاینت موجود باشه و توی هر درخواست برای سرور ارسال بشه (به اسم PHPSESSID). اگه کاربر کوکی رو غیرفعال کنه، معمولاً کوکی بعد از بسته شدن مرورگر از بین میره و معناش این نیست که اصلاً کوکی ساخته نمیشه ولی اگه کلاً ساخته نشه هم درصورتی که توی تنظیمات PHP گزینه trans_sid فعال باشه (پیشفرض)، موقعی که لینکی ساخته میشه بطور خودکار PHPSESSID به Query String اضافه میشه و اگه فرم باشه، یه عنصر مخفی توی فرم با نام PHPSESSID و با مقدار Session ID اضافه میشه و اگه این گزینه توی تنظیمات غیرفعال باشه، باید خودتون زحمت این کار رو بکشین. بهرحال وجود Session ID برای کارکرد صحیح سشن لازمه چون باید سرور بفهمه از بین چندین فایل سشن که داره، کدوم یکی متعلق به این کاربری هست که داره درخواست میده.

معمولاً مسیر ذخیره سازی سشن tmp/ هست ولی میتونید با تابعی که گفتین، مسیرش رو عوض کنید. باید مسیر فیزیکی بدین نه نشانی اینترنتی (URL) یعنی گزینه دومی که نوشتین درسته. البته مسیر شامل اسم کاربرتون هم هست (معمولاً همونی که توی کنترل پانل هاست باهاش لاگین میکنید). برای مثال:

home/azarsang/session/

که البته باید مجوز نوشتن رو به این پوشه بدین و ترجیحاً همونطور که توی مثال بالا گفتم، توی پوشه public_html نگذارین تا دسترسی Global بهش کسی ازطریق وب نداشته باشه.

عالی بووود.
ی سوال برام پیش اومده در مورد حمله session fixed :
خوب همینطور که گفتید سشن در مرورگر یک کوکی ایجاد میکنه تا ب کمک اون کار کنه.
حالا
اگه هکر نتونه به کوکی مرور گر دسترسی داشته نمیتونه سشن رو هک کنه؟
ب نظرتون درسته؟
مرسی
پاسخ
تشکر شده توسط:
#15
تو کتاب آقای استخریان (راه های نفوذ در php) این مثال رو برای مبارزه با حملات session fixed گفته بود.
ولی من چیزی ازش متوجه نشدم.

session_start();
if(!isset($_SESSION['initated'])){
$_SESSION['invalid']=true;
session_regenerate_id();
}

تو این کد گفته که اگه مقدار آن سشن وجود ندارد مقدار آن سشن را true بکن.
و ی تابعی را هم زیرش گذاشته.
خوب اینطوری که همه میتونن از بخش یوزر سایت استفاده کنن.
البته شاید من کد هارو متوجه نشدم.
مرسی
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان