• 1401/07/25

جلو گیری از اسپم درخواست ajax :

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

  • 1401/07/25
  • ساعت 14:36

ببخشید عکسی که گذاشتم اومده؟


  • 1401/07/25
  • ساعت 19:03

با سلام.

 

بله تصاویر Upload شده است. لطفاً کدهای مربوطه را جهت بررسی ارسال کنید.


  • 1401/07/25
  • ساعت 19:26

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


  • 1401/07/25
  • ساعت 20:11

یک راه برای انجام این کار:

 

می توانید یک فیلد boolean به مدل اضافه کنید مثلاً is_favorite ، و پس از اینکه توسط کاربر دکمه مربوطه کلیک شد، در add_to_bookmarks  چک کنید تنها در صورتی که False بود، آنرا True کند ( یا حتی Toggle کند، اگر True بود False و بالعکس ) و به Favorite ها اضافه کند.

 


  • 1401/07/25
  • ساعت 21:09

منظورمو بعد نوشتم ببخشید فارسیم خوب نیست :( من فقط میخوام جلوی اسپم رو بگیرم  اضافه کردن به علاقه مندی کار میکنه من فقط میخوام کاربر وقتی هی تند تند میزنه روش بعد 5 امین بار مثلا ارروری بده که لطفا بعدا دوباره تلاش کنید


  • 1401/07/25
  • ساعت 21:53

می توانید برای دکمه یک unique id قرار دهید و در کدهای js  اگر status === success بود، آن دکمه را disable کنید.

 

function disableBtn() {
    document.getElementById("#add_to_fav_n").disabled = true;
}

 

همچنین با استفاده از ساختاری که توضیح دادم نیز می توانید تنها در صورتی که فیلد is_favorite برابر False بود، دکمه Add To Favorite را فعال یا غیر فعال کنید.


  • 1401/07/26
  • ساعت 09:39

سلام دوست من

برای این مورد بهتره از تنظیمات سرور استفاده کنین. نوشتن یک middleware هم میتونه گزینه ی مناسبی برای این مورد باشه

صرفا اگه از طریق javascript انجام بدین یک برنامه نویس میتونه به این موضوع پی ببره و با غیرفعال کردن کد شما به سرورتون attack بزنه


  • 1401/07/26
  • ساعت 10:32

استاد:

می توانید یک فیلد boolean به مدل اضافه کنید مثلاً is_favorite ، ......

تنها در صورتی که فیلد is_favorite برابر False بود، دکمه Add To Favorite را فعال یا غیر فعال کنید.

 

با این روش، تنها یک بار به کاربر اجازه اضافه کردن محصول به Favorite داده می شود.

 

در مورد JS البته، صحیح می فرمایید.

 

اگر لطف کنید در مورد استفاده از تنظیمات سرور راهنمایی بفرمایید سپاسگزار خواهم بود.


  • 1401/07/26
  • ساعت 10:47

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

در این حالت در خوش بینانه ترین حالت ممکن تعداد زیادی درخواست به دیتابیس ارسال میشه که عملا سایت down میشه به اصطلاح و تنها در صورتی سایت بالا میاد که سرور ریست بشه

متاسفانه بنده با apache کار نکردم اما برای این مورد در nginx میتونین از طریق لینک زیر اقدام کنین:

https://www.nginx.com/blog/rate-limiting-nginx/


  • 1401/07/26
  • ساعت 15:53

سلام ممنونم از جفتتون 


  • 1401/07/26
  • ساعت 16:51

اینو پیدا کردم کارم میکنه فکر کنم همین کفایت کنه :D
https://django-throttle-requests.readthedocs.io/en/latest/installation.html


  • 1401/07/26
  • ساعت 20:42

ممنون از توضیحات استاد گرامی.

سپاس از شما برای به اشتراک گذاری راه حل.


  • 1401/07/27
  • ساعت 11:07

خواهش میکنم دوست من

موفق باشین :)


logo-enamadlogo-samandehi