نمایش نتایج 1 تا 10 از 10

نام تاپیک: امنیت داده های Hidden در Viewها

  1. #1
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,172

    امنیت داده های Hidden در Viewها

    سلام

    در View نمایش داده شده به کاربر یک جدول از اطلاعات دارم. حالا برحسب نیاز یا Id را نمایش میدم و یا بصورت Hidden نگهداری میکنم. مشابه همین موضوع برای دکمه های CRUD که مقدار Id را در یکی از پارامترها جهت استفاده نگهداری میکنم. حالا چطور میشه مطمئن بود که کاربر از طریق ابزار Inspect و یا هر ابزاری که محتویات صفحه وب را نمایش میدهد این مقدار را دستکاری نمی کند؟ آیا راهی برای تضمین نگهداری مقادیر مهم در Viewها وجود دارد؟ یکی از واردی که به ذهنم میشه اینه که برای هر جدول ضمن تعیین ستون Key یک ستون Unique هم ایجاد کنم که هیچ Relationی هم با جداول دیگر نداره و قبل از هر عملیاتی در بانک اطلاعاتی ابتدا همسانی بودن مقدار Id و Uniuq رو چک کنم اگر با اطلاعات ردیف متناظر همسان بودند پس مقدار Id صحیح است و عملیات انجام خواهد شد. ممنون اگر راهنمایی کنید

    تشکر

  2. #2
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,172

    نقل قول: امنیت داده های Hidden در Viewها

    سلام. دوستان کسی راه حلی برای این کار پیشنهاد نمیکنه؟ آیا راه حل پیشنهادی قابل استفاده است؟

  3. #3
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,172

    نقل قول: امنیت داده های Hidden در Viewها

    اساتید لطفا کمک برسونید

  4. #4
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: امنیت داده های Hidden در Viewها

    آقای Sergey Akopov در یک مقاله در این آدرس یک سری کلاس Html Helper و Attribute ساخته و ارائه کرده که در سمت View و بعنوان اتریبیوت روی فیلدهای مدل قابل استفاده است.
    اگر هیدن فیلد خاصی رو در سمت ویو بخواهید رمزنگاری کنید از چنین دستوری بر اساس کلاس های ایشان استفاده خواهد شد:
    @Html.SecureHiddenFor(model => model.SomeProperty)

    در نتیجه، مقدار فیلد فوق در صورت Inspect کردن عنصر مورد نظر در صفحه این گونه دیده خواهد شد:
    <input id="SomeProperty" name="SomeProperty" type="hidden" value="I love lamp">
    <input name="__SomePropertyToken" type="hidden" value="zqb7MIL2Y5F3jL96ncdSZOmetL8g8RAWZP8Y/w/jUAKJ89GcUViRWOZ/XtQhtICMFZb4sQtZLOpqK/WyC0TFP0B6r+3nObFGDjb0U459yzQbadC4+DLIsTmhyYeT+ZT+ bnW1AEP2fgVyXXSduYIf5vns7g9nhRWTgJo8xF6NQyT6kNgyl5 puq+BYc8dfhMXn">


    پس از اضافه کردن هلپر فوق در ویو، لازم است در بالای اکشن مورد نظر در کنترلر نیز اتریبیوت ValidateSecureHiddenInputs را به این صورت اضافه کنید:

    [ValidateSecureHiddenInputs("SomeProperty")]
    public ActionResult Index(MyViewModel model)
    {
    return View();
    }

    این اتریبیوت بررسی می کند آیا مقدار هیدن فیلد مورد نظر همانی هست که باید باشد و یا دستکاری شده است.

    برای دریافت کلاسهای مورد استفاده در نمونه کدهای فوق به آدرس ذکر شده در ابتدای این مطلب مراجعه کنید.

  5. #5
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,172

    نقل قول: امنیت داده های Hidden در Viewها

    جناب کرامتی عزیز ممنون از راهنمای شما

  6. #6
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,172

    نقل قول: امنیت داده های Hidden در Viewها

    سلام.

    مطابق راهنمای سایت کلاس ها را ایجاد کردم. در Edit View فیلد Id یک مقدار نامفهوم را نمایش میده ولی علاوه بر اون، مقدار اصلی هم نمایش داده میشه. با این حال در متد Edit با HttpPost صفت [ValidateSecureHiddenInputs("Id")] هم تعریف شده ولی اصلا کلاس Validation اجرا نمیشه. در حالت Debug اصلا ارجاعی به Validation داده نمیشه. اشتباه کار من کجاست؟ در واقع Helperهای جدید SecureHiddnFor را ایجاد میکنند ولی در زمان Post شدن اطلاعات فرم به متد Edit همچنان همان مقدار کلید اصلی ارسال میشه و چنانچه دستکاری هم بشه برنامه خطایی نمیگیره و اطلاعات ردیف دستکاری شده در بانک اصلاح میشه.

    اینطور که متوجه شدم برنامه در View یک فیلد اضافه ایجاد میکنه که مقدار نامفهوم را تحت عنوان Token نگهداری میکنه و در زمان Post شدن اطلاعات فرم به متد مورد نظر، اطلاعات این فیلد به همراه نام فیلد جدید که در انتها عبارت Token داره را به سمت سرور ارسال میکنه و کلاس ValidateSecureHiddenInputsAttribute باید مقدار اصلی Id رو با Token دریافتی برمبانی الگوریتم تعریف شده بررسی کنه و اگر تطبیق نداشتند پیغام خطا صادر خواهد شد و در غیر اینصورت برنامه ادامه خواهد یافت.


  7. #7
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: امنیت داده های Hidden در Viewها

    [ValidateSecureHiddenInputs("SomeProperty")]
    public ActionResult Index(MyViewModel model)
    {
    return View();
    }

    اگر دقت کنید در بالای اکشن مورد نظر اتریبیوت ValidateSecureHiddenInputs رو بهمراه اسم فیلدی که میبایست توکن اش جهت جلوگیری ارزیابی بشه رو اضافه کرده.

  8. #8
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,172

    نقل قول: امنیت داده های Hidden در Viewها

    اشتباه در using داشتم. کلاس ValidateSecureHiddenInputs از FilterAttribute ارث بری کرده که متعلق به فضای نام System.Web.Mvc هستش که من به اشتباه از System.Web.Http.Filters استفاده کرده بودم.

    در ضمن در جایی از دستورات مربوط به HtmlExtensions یک تبدیل از نوع Binary انجام شده که متعلق به فضای نام System.Data.Linq می باشد.

  9. #9
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,172

    نقل قول: امنیت داده های Hidden در Viewها

    سلام

    جناب کرامتی عزیز با توجه به راهنمایی که فرمودید تونستم مشکل را حل کنم. اگر بخوام این کار را برای تمام Viewها انجام بدم باید این صفت را که در آموزش قبلی اشاره کردید برای تمام متدها و فیلدهای مورد نظر اعمال کنم. صرفا یک سوال داشتم، آیا تنها راه همینه؟ منظورم این هستش که تمام برنامه های وب از این روش و یا روش های مشابه استفاده میکنند؟ علت سوالم این هستش که فکرم میکنم امنیت اطلاعات ارسال شده برای کاربر که می بایست مجددا پس از ویرایش به سمت سرور ارسال بشه خیلی مهمه و چرا این موضوع بصورت پیش فرض در تولید صفحات وب وجود نداره؟ جسارتا آیا خود شما از همین روش استفاده میکنید؟

    تشکر

  10. #10
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: امنیت داده های Hidden در Viewها

    آیا تنها راه همینه؟
    تنها راه نه، منطقی ترین راه همینه.

    تمام برنامه های وب از این روش و یا روش های مشابه استفاده میکنند؟
    در صورت نیاز به چنین مکانیسمی، بله.

    امنیت اطلاعات ارسال شده برای کاربر که می بایست مجددا پس از ویرایش به سمت سرور ارسال بشه خیلی مهمه و چرا این موضوع بصورت پیش فرض در تولید صفحات وب وجود نداره؟
    این مکانیسم معمولا در صفحاتی که کاربران عادی سایت و مشتریان باهاش سر و کار دارند استفاده میشه و در بخش ادمین از لحاظ منطقی کاربرد نداره، چون ادمین ها ذاتا دنبال هک کردن یا دستکاری کردن بی اجازه اطلاعات سایتی که مال خودشون است نیستند. مگر اینکه یک صفحه قرار باشه توسط یک ادمین ثانویه (که ممکنه استخدام شده باشه برای اونکار، و صاحب سایت نباشه) استفاده بشه.

    آیا خود شما از همین روش استفاده میکنید؟
    در سناریوهای مشابه فوق، بله.

تاپیک های مشابه

  1. امنیت برای المان hidden در فرم
    نوشته شده توسط sara.ghavam در بخش CodeIgniter
    پاسخ: 7
    آخرین پست: پنج شنبه 20 خرداد 1395, 18:18 عصر
  2. سوال: چگونه يه مقدار داده بين viewهاي مختلف منتقل ميشود؟
    نوشته شده توسط roshanak_g در بخش ASP.NET MVC
    پاسخ: 3
    آخرین پست: یک شنبه 18 اردیبهشت 1390, 17:03 عصر
  3. اشکال در viewها
    نوشته شده توسط jannati در بخش SQL Server
    پاسخ: 3
    آخرین پست: شنبه 19 دی 1383, 20:57 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •