تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 4 از 4

نام تاپيک: طراحی سبد خرید فروشگاه با کوکی یا با دیتابیس؟ امنیت یا سرعت ؟

  1. #1
    اگه نباشه جاش خالی می مونه ali_i3's Avatar
    تاريخ عضويت
    Mar 2013
    پست ها
    252

    14 طراحی سبد خرید فروشگاه با کوکی یا با دیتابیس؟ امنیت یا سرعت ؟

    با عرض سلام

    یه سوال در مورد طراحی سبد خرید فروشگاه با کوکی یا با دیتابیس دارم :

    منظورم از کوکی و دیتابیس محل نگهداری اطلاعات سبد خرید تا نهایی شدن خرید کاربر هست .

    اینکه میگن امنیت در پیاده سازی سبد خرید با پایگاه داده خیلی بالاتره به چه دلیله ؟(من هرچه فکر کردم دلیلی برای این استدلال نیافتم)

    حتی اگه طرف مثلا با انجام هک و تغییرات با جاوا اسکریپت بتونه مثلا قیمت نهایی یک سبد خرید 1 میلیونی رو به 10 هزار تومان برسونه و خرید رو نهایی کنه در طرف مقابل در سمت پنل مدیرت مقدار پول پرداختی طرف و کالاهایی که سفارش شده مشخص است و میشه تخلف رو فهمید !

    در واقع خود بنده کوکی رو خیلی بیشتر ترجیح میدم ولی اگه بدونم امنیت ندار کلا میزارمش کنار !

    لطفا راهنمایی کنید ؟

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    در مورد سبد خرید، شما فقط فهرستی از کدکالا و تعداد را جایی نگاه دارید، کافیست.
    یعنی نیازی به نام و قیمت و... که نیست.
    ولی برای ذخیره در کوکی مجبور میشوید این شبه جدول دوستونه را اول Serialize کنید تا بتوانید در یک کوکی جایش دهید.
    برای امنیت میتوان کوکی ها را رمزنگاری کرد ولی بحرحال سمت کلاینت ذخیره میشود و مقداری امنیتی پایین تری دارد
    (((
    اما اصولا "سبد خرید" مفهومی نیست که جای ترس زیادی برای امنیت داشته باشد
    (با همان تفکر جدول دوستونه) نهایت هکر میخواهد کدکالا و تعداد آنها را دست کاری کند!!!
    شما میتوانید قبل نهایی شدن خرید اطلاعات را "اعتبارسنجی" کنید که مثلا کالا موجود باشد، قابل فروش باشد، تعداد خرید عددی معقولی باشد و...
    یا در مرحله بدتر شاید سبد خرید فرد "لو(فاش)" برود وبرنامه ای بتواند آنها را بخواند...!
    )))


    البته شما یک روش دیگر را هم فراموش کردید که بین دوروش شما قرار دارد و آن هم ذخیره در Session است.
    از امنیت بگذریم تفاوت های دیگر هم وجود دارد...

    اگر سایت شما طوری است که مشتری باید Login کند تا خرید کند.
    ذخیره در دیتابیس بهتر است
    چرا؟
    میتوانید "سبد خرید" را به اکانت کاربری فرد لینک کنید.
    حیف است اکانتینگ داشته باشید و اطلاعات دلخواه فرد به اکانتش متصل نباشد.
    اینطوری فرد میتواند "سبد خریدش" را ویرایش کند ولی خرید نکند...
    چندروز بعد از جای دیگری که لاگین کند، مجدد همان "سبد خریدش" را دارد و میتواند مجدد ویرایش کند و خرید را هروقت خواست نهایی کند.

    اگر هم سایت طوری است که کاربرتان بدون عضویت ولاگین میتواند خرید کند، میتوانید در Session و یا Cookie ذخیره کنید.
    استفاده Session مصرف RAM سرورتان را افزایش میدهد ولی هزینه سریالی و دی-سریالی ندارد.
    استفاده از Cookie ها مصرف CPU بیشتری بابت رمزنگاری و سریالی و دی-سریالی خواهید داشت ولی RAM سرور خالی تر خواهد بود.
    و...

    موفق باشید.
    Last edited by _H2_; 14-06-2017 at 22:25.

  3. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  4. #3
    اگه نباشه جاش خالی می مونه ali_i3's Avatar
    تاريخ عضويت
    Mar 2013
    پست ها
    252

    پيش فرض

    سلام
    در مورد سبد خرید، شما فقط فهرستی از کدکالا و تعداد را جایی نگاه دارید، کافیست.
    یعنی نیازی به نام و قیمت و... که نیست.
    ولی برای ذخیره در کوکی مجبور میشوید این شبه جدول دوستونه را اول Serialize کنید تا بتوانید در یک کوکی جایش دهید.
    برای امنیت میتوان کوکی ها را رمزنگاری کرد ولی بحرحال سمت کلاینت ذخیره میشود و مقداری امنیتی پایین تری دارد
    (((
    اما اصولا "سبد خرید" مفهومی نیست که جای ترس زیادی برای امنیت داشته باشد
    (با همان تفکر جدول دوستونه) نهایت هکر میخواهد کدکالا و تعداد آنها را دست کاری کند!!!
    شما میتوانید قبل نهایی شدن خرید اطلاعات را "اعتبارسنجی" کنید که مثلا کالا موجود باشد، قابل فروش باشد، تعداد خرید عددی معقولی باشد و...
    یا در مرحله بدتر شاید سبد خرید فرد "لو(فاش)" برود وبرنامه ای بتواند آنها را بخواند...!
    )))


    البته شما یک روش دیگر را هم فراموش کردید که بین دوروش شما قرار دارد و آن هم ذخیره در Session است.
    از امنیت بگذریم تفاوت های دیگر هم وجود دارد...

    اگر سایت شما طوری است که مشتری باید Login کند تا خرید کند.
    ذخیره در دیتابیس بهتر است
    چرا؟
    میتوانید "سبد خرید" را به اکانت کاربری فرد لینک کنید.
    حیف است اکانتینگ داشته باشید و اطلاعات دلخواه فرد به اکانتش متصل نباشد.
    اینطوری فرد میتواند "سبد خریدش" را ویرایش کند ولی خرید نکند...
    چندروز بعد از جای دیگری که لاگین کند، مجدد همان "سبد خریدش" را دارد و میتواند مجدد ویرایش کند و خرید را هروقت خواست نهایی کند.

    اگر هم سایت طوری است که کاربرتان بدون عضویت ولاگین میتواند خرید کند، میتوانید در Session و یا Cookie ذخیره کنید.
    استفاده Session مصرف RAM سرورتان را افزایش میدهد ولی هزینه سریالی و دی-سریالی ندارد.
    استفاده از Cookie ها مصرف CPU بیشتری بابت رمزنگاری و سریالی و دی-سریالی خواهید داشت ولی RAM سرور خالی تر خواهد بود.
    و...

    موفق باشید.

    درود
    ممنونم با توضیحات و راهنماییهاتون
    در مورد Session هم یه باری به سرور تحمیل میشه و من خواستم نهایت آسودگی رو برای سرور فراهم کنم.

    همون طور که شما هم اطلاع دارید خیلی از سایت ها(حتی بزرگ)هستند که در زمان ورود تعداد زیاد کاربران و شلوغ شدن سایت سرورشون دچار مشکل میشه و از دسترس خارج مشن .
    نمونش دیجی کالا در طرح سه روز یلدای سال قبل بود که با ورود زیاد کاربران دچار مشکل شدیدی شد.یا همین سایت
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] که در طرح تخیف نوروزی دچار مشکل شدید شد و غیره که کم نبوده همچین مواردی در بین سایت های ایرانی.


    در مورد کوکی من Id محصول رو در نام کوکی که ایجاد میکنم قرار میدم و تعداد محصول رو در مقدار کوکی و بخوبی عمل میکنه , ولی مشکلی که هست اینه که من علاوه بر نگهداری Id محصول و تعداد به نگهداری گارانتی - رنگ و سایز انتخابی هم نیاز دارم .

    اگه بخوام از همین روش کوکی استاده کنم بنظرتون برای نگهداری مقادیری انتخابی کاربر از :
    رنگ و سایز و گارانتی و ... به چه شیوه ای میتوان عمل کرد ؟ ViewBag و TempData که نمیتونن مقادیر رو حفظ کنن! چون کاربر بعد از افزودن یک محصول به سبد خرید ممکنه که بره تو سایت کلی بچرخه و بعد خرید کنه و ViewBag و TempData اصلا کارآمد نیست .
    اگه لطف کنید و یک راه حل برای این مورد پیشنهاد بدید که مثل کوکی باری رو به سرور تحمیل نکنه ممنون میشم.

    Last edited by ali_i3; 15-06-2017 at 09:06.

  5. #4
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    اشیایی مانند ViewBag و TempData که اصلا جای طرح ندارد.
    اینها وظایف شان مستقل است و نهایت در سطح per-request کاربرد دارند.
    شی ماندگار باید در Session و Cookie و Database و ViewState و Static و... نگه داری شود.
    (برای این کار هم اگر اکانتینگ دارید، بهترین مکان Database و در غیر این صورت Session است)


    حجم درخواست بالا میتواند کارکرد هرسروری را مختل کند.
    (حتما میدانید نوع حمله ساده ای به نام ddos داریم که برهمین اساس است و هنوز هم درست انجام شود روی سرورهای بزرگترین شرکت های نرم افزاری دنیا جواب میدهد.)

    داده های کد و تعداد و رنگ و گارانتی و... همه عددی هستند، نهایت هر سطر 16 الی 32 بایت حافظه RAM بگیرد.
    اگر خیلی میخواهید صرفه جویی کنید با درنظرگیری مفهوم alignment داده ها در RAM میتوانید از داده های کوچکتر استفاده کنید (مثلا ushort بجای int)
    همزمان ده هزار نفرآنلاین باشند!!! و هرکس ده محصول در سبد داشته باشد سرجمع میشود صدهزار کالا در سبدهای خرید همه !!!
    از نظر حافظه RAM میشود 1 تا 5 مگ!!!
    مهم استفاده بجا و صحیح است، هرز نرفتن، اسراف وریخت وپاش نکردن.
    کوکی هم هزینه های اپلود و دانلود و سریالی ودی-سریالی و... دارد، مفت نیست.


    و اما بظاهر در مورد روش ذخیره در کوکی مشکلاتی دارید.
    ذخیره اشیای پیچیده در کوکلی مانند ذخیره آنها در یک فایل است.
    باید از سریال سازی استفاده کنید.
    سریال سازهای آماده بسیاری موجود هستند... Binary, Xml, Json و...
    (برای این مورد json با یک رمزنگاری اضافه را ترجیح میدهم که باید بسته Install-Package Newtonsoft.Json را نصب کنید)

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    موفق باشید.
    Last edited by _H2_; 18-06-2017 at 21:55.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •