سلام دوستان
برای برقرای هرچه بیشتر فرم های عضویت در خبرنامه باید چیکار کرد؟
در هر وب سایتی که فرمی برای ارسال اطلاعات به سرور موجود باشد، آن وب سایت مستعد ارسال اسپم و بمباران درخواستهای متعدد خواهد بود.
در برخی موارد استفاده از کپچا میتواند راه خوبی برای جلوگیری از ارسالهای مکرر و مخرب باشد، ولی گاهی اوقات سناریوی ما به شکلی است که امکان استفاده از کپچا، به عنوان یک مکانیزم امنیتی مقدور نیست.
اگر شما یک فرم تماس با ما داشته باشید استفاده از کپچا یک مکانیزم امنیتی معقول میباشد و همچنین اگر فرمی جهت ارسال پست داشته باشید. اما در برخی مواقع مانند فرمهای ارسال کامنت، پاسخ، چت و ... امکان استفاده از این روش وجود ندارد و باید به فکر راه حلی مناسب برای مقابل با درخواستهای مخرب باشیم.
من برای مقابله با مشکل یک شناسهی منحصر به فرد را برای هر درخواست ایجاد کنیم.
برای تولید این شناسه از IP درخواست جاری به مشخصات مرورگر میچسبونم و بعد Hash آن رو حساب میکنم.
مرحله بعد پیاده سازی مکانیزمی برای نگهداری این اطلاعات و بازیابی آنها در هر درخواست است.
برای پیاده سازی این مکانیزم از Cache استفاده میکنم.(هرچند که راه های بهتری هم وجود داره) و زمان انقضا Cache رو یک مقدار دلخواه برای مثال 1 دقیقه قرار میدهم.
خوب حالا یک درخواست ب سرور رسیده. اول شناسه منحصر به فرد این درخواست رو ایجاد میکنم(Hash) و سپس در Cache ب دنبال این شناسه میگردم اگر وجود داشت یعنی این درخواست یک اسپم هست.
شاید پاسخ شما همینجا باشد
میتونید از recaptcha گوگل استفاده کنید
البته میتونید ابتدا چک کنید اگر ip کاربر در رنج ip کاربرای ایرانی نبود recaptcha اعمال بشه
و همچنین راه دیگه اینکه محدودیت بزارید شما میتونید کاری کنید هر کاربر در هر ۳۰ دقیقه یا ۱ ساعت تنها بتونه سه درخواست به اون url ارسال کنه البته منظورم از کاربر ip هست
البته recaptcha راه خوبیه
البته من حواسم نبود که بات ها میتونند هدر User Agent رو عوض کنند.
با توجه به این موضوع دیگه از مشخصات مروگر برای تولید شناسهی منحصر به فرد استفاده نمیکنیم.