rezachess
چهارشنبه 29 مرداد 1393, 17:50 عصر
سلام خسته نباشید.
من یک ایده جدید دارم برای اینکه امنیت و پرفورمنس به شکلی فوق العاده بره بالا.
ایده من برای استفاده از سشن ها هست به یک شکل خاص .
فرض کنین شما یک سایت دارید مثلا سایت بازی . تو این سایت یک قسمت برای ساخت ساختمان جدید هست . تو اون صفحه که می روید یک تابع اجرا می شه و ساختمان های قابل ساخت برای شما نمایش داده می شه ( این تابع کلی کار انجام می ده و مصرف رم و سی پی یو بالا داره !) در نهایت یک می گه که آقا شما مثلا می تونی یک سری ساختمان هایی بسازی تهش هم یک لینک می ده که اگه روش کلیک کنی ساختمان ساخته می شه لینکش هم به این صورت هست
build.php?id=5&bid=7&fid=8&c=123;
که اون (fid , bid , id ) ماله ساخت ساختمان هست c هم ماله چک کردن با سشن هست که با ریفریش در صفحه مقصد دوباره ساختمان ساخته نشه ! (یک چیز معمولی ).
مشکل اینجا پیش می آید که در صفحه مقصد باز باید همه چک ها از ابتدا روی ساختمان که می خواد ساخته بشه انجام بشه (همون تابع پر مصرف) چون شاید یکی بیاد مثلا bid(build id) را یک مقدار دیگه بده و یک ساختمان غیر مجاز بخواد بسازه.
حالا ایده من این بود که بیایم از سشن به این سبک استفاده کنیم .
$_SESSION[$Key]=array('id'=>5,&'bid'=7,'fid'=>8);
لینک برای صفحه مقصد به این شکل می شه
build.php?key=$key
که حالا یک کی رندم یا براساس یک قایده ایجاد می کنیم و تو صفحه مقصد از اون کی محتویات سشن را می خوانیم .
فواید این روش این هست که
1- دیگه کاربران نمی تونن اطلاعات وارد کنن فقط یک کی هست که اون هم تو صفحه مقصد چک های لازم روش انجام میشه و خطراتی مثله SQL injection و مشکلاتی از این سبک پیش نمی یاد
2- دیگه نیازی نیست که برخی از توابع دوباره اجرا بشن تا صحت اطلاعات چک بشه ( در اینجا اون تابع سنگین )
مشکلات
در این روش باید مدام با سشن کار کنیم و در صفحه مقصد سشن را پاک کنیم . یکی از مشکلات این هست که خوب حجم سشن می ره بالا .
و یکی از مشکلات دیگه این هست که صفحه ای اگه دوبار یک صفحه اجرا بشه اولیش می سوزه. یعنی دیگه لینکاش غیر فعال می شن . چون در ابتدای صفحه باید سشن ها پاک بشن و دوباره نوشته بشن .
حالا سوال من این هست که اول که این روش خوبه یا نه !؟
دو برای مشکلاتش راه حلی هست یا نه !؟
من یک ایده جدید دارم برای اینکه امنیت و پرفورمنس به شکلی فوق العاده بره بالا.
ایده من برای استفاده از سشن ها هست به یک شکل خاص .
فرض کنین شما یک سایت دارید مثلا سایت بازی . تو این سایت یک قسمت برای ساخت ساختمان جدید هست . تو اون صفحه که می روید یک تابع اجرا می شه و ساختمان های قابل ساخت برای شما نمایش داده می شه ( این تابع کلی کار انجام می ده و مصرف رم و سی پی یو بالا داره !) در نهایت یک می گه که آقا شما مثلا می تونی یک سری ساختمان هایی بسازی تهش هم یک لینک می ده که اگه روش کلیک کنی ساختمان ساخته می شه لینکش هم به این صورت هست
build.php?id=5&bid=7&fid=8&c=123;
که اون (fid , bid , id ) ماله ساخت ساختمان هست c هم ماله چک کردن با سشن هست که با ریفریش در صفحه مقصد دوباره ساختمان ساخته نشه ! (یک چیز معمولی ).
مشکل اینجا پیش می آید که در صفحه مقصد باز باید همه چک ها از ابتدا روی ساختمان که می خواد ساخته بشه انجام بشه (همون تابع پر مصرف) چون شاید یکی بیاد مثلا bid(build id) را یک مقدار دیگه بده و یک ساختمان غیر مجاز بخواد بسازه.
حالا ایده من این بود که بیایم از سشن به این سبک استفاده کنیم .
$_SESSION[$Key]=array('id'=>5,&'bid'=7,'fid'=>8);
لینک برای صفحه مقصد به این شکل می شه
build.php?key=$key
که حالا یک کی رندم یا براساس یک قایده ایجاد می کنیم و تو صفحه مقصد از اون کی محتویات سشن را می خوانیم .
فواید این روش این هست که
1- دیگه کاربران نمی تونن اطلاعات وارد کنن فقط یک کی هست که اون هم تو صفحه مقصد چک های لازم روش انجام میشه و خطراتی مثله SQL injection و مشکلاتی از این سبک پیش نمی یاد
2- دیگه نیازی نیست که برخی از توابع دوباره اجرا بشن تا صحت اطلاعات چک بشه ( در اینجا اون تابع سنگین )
مشکلات
در این روش باید مدام با سشن کار کنیم و در صفحه مقصد سشن را پاک کنیم . یکی از مشکلات این هست که خوب حجم سشن می ره بالا .
و یکی از مشکلات دیگه این هست که صفحه ای اگه دوبار یک صفحه اجرا بشه اولیش می سوزه. یعنی دیگه لینکاش غیر فعال می شن . چون در ابتدای صفحه باید سشن ها پاک بشن و دوباره نوشته بشن .
حالا سوال من این هست که اول که این روش خوبه یا نه !؟
دو برای مشکلاتش راه حلی هست یا نه !؟