• 2 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از سشن یا کوکی در هنگام ورود کاربر. کدامیک بهتر است؟
#1
سلام خدمت اساتید محترم
دوستان یه سوالی برام پیش اومده که ممنون میشم توضیحات کامل و جامعی رو بدید.
سوال اینه که من زمانی که کاربری وارد حساب کاربریش میشه از کوکی برای نگه داشتن اطلاعاتش استفاده میکنم. اما در یکی از آموزش ها به زبان اصلی دیدم که از سشن استفاده کرده. آیا اگر از سشن استفاده بشه بار اضافی بر روی سرور ایجاد نخواهد شد؟ امنیت کدام یک بیشتر است و در کل شما کدامیک را پیشنهاد میکنید؟

Sent from my GT-I9305 using Tapatalk
  پاسخ
تشکر شده توسط :
#2
سلام
Session برای ذخیره سازی اطلاعات مربوط هر کاربر در سمت سرور است اما cookie برای اطلاعات مربوط به هر کاربر در مرورگر وب است. امنیت session بسیار بالاتر از cookie است و بهتر است اطلاعات با اهمیتتر در session و اطلاعات بی اهمیت مانند تنظیمات سمت کلاینت کاربر در cookie ذخیره شوند. سیشن باری روی سرور نمیندازه بهترین راه استفاده از سشن هست با اینکه بازهم امنیت 100 درصد نیستExclamation
  پاسخ
تشکر شده توسط : miniprogrammer Y.P.Y Alaa ayoubsys
#3
اگه دنبال امنیت بیشتری توصیه میکنم از token استفاده کنی...

امنیت متوسط میخوای سشن ...

از کوکی هرگز استفاده نکن ...
همیشه برای یادگیری، موضوعاتی هست!

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

فرهاد حسن پور / بیرگیک

  پاسخ
تشکر شده توسط :
#4
(۱۳۹۵ اردیبهشت ۲۱, ۰۱:۲۸ ق.ظ)kasbookar نوشته: سلام
Session برای ذخیره سازی اطلاعات مربوط هر کاربر در سمت سرور است اما cookie برای اطلاعات مربوط به هر کاربر در مرورگر وب است. امنیت session بسیار بالاتر از cookie است و بهتر است اطلاعات با اهمیتتر در session و اطلاعات بی اهمیت مانند تنظیمات سمت کلاینت کاربر در cookie ذخیره شوند. سیشن باری روی سرور نمیندازه بهترین راه استفاده از سشن هست با اینکه بازهم امنیت 100 درصد نیستExclamation
تشکر دوست عزیز

Sent from my GT-I9305 using Tapatalk

(۱۳۹۵ اردیبهشت ۲۱, ۰۳:۵۸ ب.ظ)farhadhp نوشته: اگه دنبال امنیت بیشتری توصیه میکنم از token استفاده کنی...

امنیت متوسط میخوای سشن ...

از کوکی هرگز استفاده نکن ...
آقا توکن چی هست و چطور میتونم از اون استفاده کنم

Sent from my GT-I9305 using Tapatalk
  پاسخ
تشکر شده توسط :
#5
به این مثال توجه کنید

کد پی‌اچ‌پی:
<?php
session_start
();
if(isset(
$_POST['submit'],$_POST['text'],$_SESSION['token_key'],$_POST['token_key']) 
        && $_SESSION['token_key']==$_POST['token_key'])
        {
            echo $_POST['text'];    
}
$token_key=md5(time());
$_SESSION['token_key']=$token_key;    
?>
<form id="form1" name="form1" method="post" action="">
  <p>
    <label for="text"></label>
    <input type="text" name="text" id="text" />
  </p>
  <p>
    <input type="submit" name="submit" id="submit" value="Submit" />
    <input name="token_key" type="hidden" id="token_key" value="<?php echo $token_key;?>" />
  </p>
</form> 
توکن در کل یعنی اینکه ما یک کد قبل از ارسال تولید کنیم و داخل صفحه ای که اطلاعاتو میگیریم اونو بررسی کنیم که این کد همون کدی هست که ارسال شده یا نه در غیر این صورت false بده
توضیحات
برای مثال در کد بالا یک input مخفی تعریف کردیم قبل از فرم هم یک توکن ایجاد کردیم یعنی این کد که هر بار بعد از رفرش صفحه یک کد تولید میکنه که مقدار اون رو در token_key ریختیم!
کد پی‌اچ‌پی:
$token_key=md5(time()); 

شما میتونید یک کد پیچیده تر هم درست کنید که حدس زدن اون سخت باشه !
نکته : توکن رو داخل هیچ شرطی و یا حلقه ای قرار ندهید

بعد از تولید توکن اون ردو با کد زیر داخل یک سیشن ریختیم تا در صفحات بعدی با کد ارسالی بررسی کنیم
کد پی‌اچ‌پی:
$_SESSION['token_key'
حالا باید در موقع submit شدن فرم این مقدار رو چک کنیم که ببینیم درست هست یا نه !

بعد از تولید کد رندوم و فعال شدن سیشن که حاوی کد تولید شده هست باید بررسی کنیم که ایا کد ارسالی با مقدار سیشن برابر است یا نه
با این کد
کد پی‌اچ‌پی:
if(isset($_POST['submit'],$_POST['text'],$_SESSION['token_key'],$_POST['token_key']) 
        && $_SESSION['token_key']==$_POST['token_key'])
        
اگه برابر بود کدها اجرا میشه اگه نبود مقدار false و اجرا نشدن کدها
تمامCool
  پاسخ
تشکر شده توسط : Alaa
#6
(۱۳۹۵ اردیبهشت ۲۲, ۱۲:۰۲ ب.ظ)kasbookar نوشته: به این مثال توجه کنید

کد پی‌اچ‌پی:
<?php
session_start
();
if(isset(
$_POST['submit'],$_POST['text'],$_SESSION['token_key'],$_POST['token_key']) 
        && $_SESSION['token_key']==$_POST['token_key'])
        {
            echo $_POST['text'];    
}
$token_key=md5(time());
$_SESSION['token_key']=$token_key;    
?>
<form id="form1" name="form1" method="post" action="">
  <p>
    <label for="text"></label>
    <input type="text" name="text" id="text" />
  </p>
  <p>
    <input type="submit" name="submit" id="submit" value="Submit" />
    <input name="token_key" type="hidden" id="token_key" value="<?php echo $token_key;?>" />
  </p>
</form> 
توکن در کل یعنی اینکه ما یک کد قبل از ارسال تولید کنیم و داخل صفحه ای که اطلاعاتو میگیریم اونو بررسی کنیم که این کد همون کدی هست که ارسال شده یا نه در غیر این صورت false بده
توضیحات
برای مثال در کد بالا یک input مخفی تعریف کردیم قبل از فرم هم یک توکن ایجاد کردیم یعنی این کد که هر بار بعد از رفرش صفحه یک کد تولید میکنه که مقدار اون رو در token_key ریختیم!
کد پی‌اچ‌پی:
$token_key=md5(time()); 

شما میتونید یک کد پیچیده تر هم درست کنید که حدس زدن اون سخت باشه !
نکته : توکن رو داخل هیچ شرطی و یا حلقه ای قرار ندهید

بعد از تولید توکن اون ردو با کد زیر داخل یک سیشن ریختیم تا در صفحات بعدی با کد ارسالی بررسی کنیم
کد پی‌اچ‌پی:
$_SESSION['token_key'
حالا باید در موقع submit شدن فرم این مقدار رو چک کنیم که ببینیم درست هست یا نه !

بعد از تولید کد رندوم و فعال شدن سیشن که حاوی کد تولید شده هست باید بررسی کنیم که ایا کد ارسالی با مقدار سیشن برابر است یا نه
با این کد
کد پی‌اچ‌پی:
if(isset($_POST['submit'],$_POST['text'],$_SESSION['token_key'],$_POST['token_key']) 
        && $_SESSION['token_key']==$_POST['token_key'])
        
اگه برابر بود کدها اجرا میشه اگه نبود مقدار false و اجرا نشدن کدها
تمامCool
بسیار عالی...سپاسگذارم

Sent from my GT-I9305 using Tapatalk
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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