ورود

View Full Version : سوال: ایمن کردن استفاده از Hidden field در فرم های master-detail



sasansara
دوشنبه 22 مهر 1392, 08:06 صبح
من برای پیاده سازی فرم های master-detail، مقدار id مربوط به فرم master رو توی یه hidden field در فرم detail نگهداری می کنم.
می دونیم که کاربر می تونه با استفاده از ابزاری مثل Developer tools در مرورگر کروم، مقدار این hidden filed رو تغییر بده. مساله اونجاست که کاربر به این ترتیب امکان ویرایش ردیف داده ای رو به دست میاره که مجوز دسترسی به اون رو نداره.
مثلا من داده با id های 8 و 6 رو بهش نشون میدم ، ولی 7 رو نشون نمی دم چون دسترسی نداره، حالا موقع ویرایش 8، میاد مقدار hidden field رو 7 می کنه و در واقع اطلاعات داده 7 رو به طور غیر مجاز تغییر میده.

راه هایی که من از یکیشون برای حل این مساله استفاده می کنم:

1- بررسی اجازه دسترسی کاربر به داده در حال ویرایش، قبل از انجام ویرایش
2- کد کردن مقدار id در هنگام قرار دادن در hidden field و دیکد کردنش در هنگام استفاده

دوستان اگه روش بهتری دارن یا فکر می کنن غیر از استفاده از hidden field روش های بهتری هست لطفا مطرح کنن.

متشکرم

forestasphalt
دوشنبه 22 مهر 1392, 20:01 عصر
من روشی که یه بار استفاده کردم اینه که یه ستون به جدولم اضافه کردم و مقدار اون با استفاده از تابع guid عددی درش ذخیره کردم و این عدد رو در hiddenfield قرار دادم
و بعد سمت سرور اومدم این مقدار رو خوندم و یه سلکت از دیتابیس زدم و اگر این guid وجود داشت براش امکانات رو باز کنم و اگر نه بهش اخطار بدم
و اگر طرف خواست چند بار این کارو ادامه بده باهاش برخورد قانونی میکنم و مثلا ایدیشو بن میکنم!یا از این جور کارها
این دقیقا میشه روش دوم!

sasansara
سه شنبه 23 مهر 1392, 00:55 صبح
من روشی که یه بار استفاده کردم اینه که یه ستون به جدولم اضافه کردم و مقدار اون با استفاده از تابع guid عددی درش ذخیره کردم و این عدد رو در hiddenfield قرار دادم
و بعد سمت سرور اومدم این مقدار رو خوندم و یه سلکت از دیتابیس زدم و اگر این guid وجود داشت براش امکانات رو باز کنم و اگر نه بهش اخطار بدم
و اگر طرف خواست چند بار این کارو ادامه بده باهاش برخورد قانونی میکنم و مثلا ایدیشو بن میکنم!یا از این جور کارها
این دقیقا میشه روش دوم!

متشکر دوست عزیز.

بله تقریبا همون روش دوم هست. البته در روش شما اگه چند کاربر همزمان روی یک داده کار کنن عملکرد صحیح نخواهد بود. چون guid مربوط به آخرین کاربر در فیلد مربوطه نگهداری خواهد شد و کاربران دیگر امکان کار نخواهند داشت.

forestasphalt
سه شنبه 23 مهر 1392, 07:57 صبح
در مثال من کاربر فقط میبایست اطلاعات مربوط به خودشو تغییر بده و سیستم چند کاربری مطرح نبود