سلام من یه سوالی دارم که چجوری میتونم جلوی اسپم ajax رو بگیرم مثلا من الان یه اضافه کردن به علاقه مندی ها برای محصول گذاشتم که یه بار میزنه اضافه میشه اگه دوباره به همون بزنه حذف میشه

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


یک راه برای انجام این کار:
می توانید یک فیلد boolean به مدل اضافه کنید مثلاً is_favorite ، و پس از اینکه توسط کاربر دکمه مربوطه کلیک شد، در add_to_bookmarks چک کنید تنها در صورتی که False بود، آنرا True کند ( یا حتی Toggle کند، اگر True بود False و بالعکس ) و به Favorite ها اضافه کند.
منظورمو بعد نوشتم ببخشید فارسیم خوب نیست :( من فقط میخوام جلوی اسپم رو بگیرم اضافه کردن به علاقه مندی کار میکنه من فقط میخوام کاربر وقتی هی تند تند میزنه روش بعد 5 امین بار مثلا ارروری بده که لطفا بعدا دوباره تلاش کنید
می توانید برای دکمه یک unique id قرار دهید و در کدهای js اگر status === success بود، آن دکمه را disable کنید.
function disableBtn() {
document.getElementById("#add_to_fav_n").disabled = true;
}
همچنین با استفاده از ساختاری که توضیح دادم نیز می توانید تنها در صورتی که فیلد is_favorite برابر False بود، دکمه Add To Favorite را فعال یا غیر فعال کنید.
سلام دوست من
برای این مورد بهتره از تنظیمات سرور استفاده کنین. نوشتن یک middleware هم میتونه گزینه ی مناسبی برای این مورد باشه
صرفا اگه از طریق javascript انجام بدین یک برنامه نویس میتونه به این موضوع پی ببره و با غیرفعال کردن کد شما به سرورتون attack بزنه
استاد:
می توانید یک فیلد boolean به مدل اضافه کنید مثلاً is_favorite ، ......
تنها در صورتی که فیلد is_favorite برابر False بود، دکمه Add To Favorite را فعال یا غیر فعال کنید.
با این روش، تنها یک بار به کاربر اجازه اضافه کردن محصول به Favorite داده می شود.
در مورد JS البته، صحیح می فرمایید.
اگر لطف کنید در مورد استفاده از تنظیمات سرور راهنمایی بفرمایید سپاسگزار خواهم بود.
موردی که شما میفرمایین زمانی مشکل ساز میشه که من یک ربات بنویسم که تعداد درخواست های زیادی رو به سرور ارسال کنه
در این حالت در خوش بینانه ترین حالت ممکن تعداد زیادی درخواست به دیتابیس ارسال میشه که عملا سایت down میشه به اصطلاح و تنها در صورتی سایت بالا میاد که سرور ریست بشه
متاسفانه بنده با apache کار نکردم اما برای این مورد در nginx میتونین از طریق لینک زیر اقدام کنین:
سلام ممنونم از جفتتون
اینو پیدا کردم کارم میکنه فکر کنم همین کفایت کنه :D
https://django-throttle-requests.readthedocs.io/en/latest/installation.html
ممنون از توضیحات استاد گرامی.
سپاس از شما برای به اشتراک گذاری راه حل.
خواهش میکنم دوست من
موفق باشین :)