PDA

View Full Version : تغییر در عملکرد ajax توسط کاربر



mmbguide
جمعه 02 اردیبهشت 1401, 14:29 عصر
سلام

من در View برنامه تعداد تابع دارم که باید دستورا ت ajax را اجرا کنند و سوالم این هستش که امکان دستکاری دستورات ajax برای کاربر وجود داره؟ مثلا یک دستور ajax در دل ajax دیگر اجرا میشه و کاربر بخواهد مستقیم ajax داخلی رو اجرا کنه. ایا این دستکاری برای کاربر امکان پذیره؟

تشکر

mmbguide
چهارشنبه 11 خرداد 1401, 23:38 عصر
دوستان کسی اطلاعاتی در این خصوص نداره؟ آیا اطلاعات یک Request که به سمت سرور ارسال میشه رو میشه براحتی دستکاری کرد؟

ghossein
پنج شنبه 24 شهریور 1401, 08:56 صبح
سلام

من در View برنامه تعداد تابع دارم که باید دستورا ت ajax را اجرا کنند و سوالم این هستش که امکان دستکاری دستورات ajax برای کاربر وجود داره؟ مثلا یک دستور ajax در دل ajax دیگر اجرا میشه و کاربر بخواهد مستقیم ajax داخلی رو اجرا کنه. ایا این دستکاری برای کاربر امکان پذیره؟

تشکر
سلام بله امکانش هست کافیه کاربر ajax داخلی رو کپی و در console مرورگر paste و اجرا کنه.

mmbguide
پنج شنبه 24 شهریور 1401, 09:37 صبح
سلام. تشکر از پاسخ شما

راه حلی برای امنیت بیشتر از این بابت وجود داره؟ مثلا ممکنه بعضر از دستورات Ajax بنابر اطلاعات موجود، یک پارامتر true ارسال کنه و با توجه به موردی که فرمودید اگر false ارسال کنه، نتیجه درستی حاصل نمیشه. راه حل چیه؟

تشکر

ghossein
پنج شنبه 24 شهریور 1401, 12:34 عصر
امنیت باید سمت سرور ایجاد بشه ، داخل مرورگر کدهای جاوا اسکریپتی اجرا میشن و کاربر بهشون دسترسی داره، شما باید سمت سرور چک کنید که آیا کاربر ایجکس اولی رو اجرا کرده؟ در صورت تایید بتونه حالت دوم رو اجرا کنه.
اگه امکانش هست بفرمایید این دوتا ایجکس تو در تو چیکاری میخوان انجام بدن.

mmbguide
جمعه 25 شهریور 1401, 21:36 عصر
مثال 1:
فرض کنید دستور Ajax یک متد را با پارامتر bool صدا میزنه و مقدار پارامتر ورودی برحسب شرایطی باید true و یا false باشه. میخوام مطمئن بشم که کاربر برای دور زدن برنامه این رو دستکاری نکرده باشه.

مثال 2:
من توابعی را بصورت عمومی در برنامه تعریف کردم (توابع JS) که هر بخش از برنامه برای اجرای اون باید پارامتر ورودی را بدرستی مقدار دهی کنه تا با ارسال این مقدار به server، برنامه اقدام مناسب را انجام بده. قطعا باید از عدم دستکاری این مقدار مطمئن باشم که اگر این اطمینان نباشه مجبور میشم برای تمام بخش های برنامه توابع جاوا را به تکرار بنویسم.

حالا سوالم این هستش که راه حل درست کدام هست؟

hamzehsh
سه شنبه 20 دی 1401, 15:16 عصر
سلام
مقدار رو از کجا متوجه میشوید که true یا false هست؟
من معمولا این کار رو انجام میدم
یک ویژگی (ActionFilterAttribute) مینویسم هر متدی که قراره با ajax پاس داده باشه باید این ویژگی رو داشته باشه
وقتی که دارم view بر میگردانم داخل مدل این مقدار را پاس میدهم (مقدار را از یک جایی میخوانم مثلا پایگاه داده).
هنگام فراخوانی متد اگر لازمه که اعتبار سنجی انجام بشه مجدد چک میکنم که کاربر تغییر نداده باشه بعد عملیات را انجام میدهم.

mmbguide
سه شنبه 20 دی 1401, 19:28 عصر
سلام

من سوالم یک مثال شاید مبهم بود. کلا منظورم این بود که آیا اطلاعاتی که از طریق Ajax به سمت سرور میاد رو چطور میشه از امنیتش مطمئن شد؟ اطلاعاتی که کاربر در یک فرم ثبت میکنه و ارسال میکنه رو میشه قبول کرد که کاربر این اطلاعات را وارد کرده و صحیح است ولی در Front برنامه هم رویدادهایی وجود داره که ممکنه Ajax اون رو به سرور ارسال کنه. البته اینکه برای بررسی هر نوعی از اطلاعات در سمت سرور یکبار با بانک ارتباط برقرار کنم و بررسی های خودم رو انجام بدم قطعا شدنیه. ولی همیشه اطلاعات سمت Front غیر مطمئن و قابل دستکاریه؟

fakhravari
پنج شنبه 22 دی 1401, 17:22 عصر
سلام

من سوالم یک مثال شاید مبهم بود. کلا منظورم این بود که آیا اطلاعاتی که از طریق Ajax به سمت سرور میاد رو چطور میشه از امنیتش مطمئن شد؟ اطلاعاتی که کاربر در یک فرم ثبت میکنه و ارسال میکنه رو میشه قبول کرد که کاربر این اطلاعات را وارد کرده و صحیح است ولی در Front برنامه هم رویدادهایی وجود داره که ممکنه Ajax اون رو به سرور ارسال کنه. البته اینکه برای بررسی هر نوعی از اطلاعات در سمت سرور یکبار با بانک ارتباط برقرار کنم و بررسی های خودم رو انجام بدم قطعا شدنیه. ولی همیشه اطلاعات سمت Front غیر مطمئن و قابل دستکاریه؟


https://learn.microsoft.com/en-us/aspnet/web-api/overview/security/preventing-cross-site-request-forgery-csrf-attacks