چگونه با دستان خالی با اسپم و ربات های اسپم مقابله کنیم؟

نکات و ترفندهای برنامه نویسی وردپرس

بدیهی است که هر چه وب سایت محبوبتری داشته باشید به همان اندازه هم اسپم های گوناگونی دریافت می کنید، راه های مختلفی برای مقابله با اسپم و ربات های اسپم(Spam Robots) وجود دارد.

یکی از این روش ها مسدود کردن آدرس های IP است که در پست آموزشی امنیت وردپرس: بلاک کردن IP های مشکوک درباره آن صحبت کردیم.

این روش یک مشکل اساسی دارد، آدرس های IP دائما در حال تغییر هستند و اسپمرها معمولا از IP های داینامیک استفاد می کنند.

راه حل دیگر حذف فیلد آدرس وب سایت از فرم ارسال دیدگاه است که در مطلب مقابله با اسپم در وردپرس: حذف فیلد وبسایت از فرم ارسال نظر به این موضوع پرداختیم.

این روش برای مقابله با کاربران و اسپمرهایی است که می خواهند لینک وب سایت شان را در بین کامنت های شما قرار دهند، با حذف این فیلد می توانید تا حدودی از دریافت اسپم جلوگیری کنید.

روش دیگر پیاده سازی کپچا در فرم های وب سایت تان است، کپچا انواع و اقسام مختلفی دارد که در مقالات آموزشی امنیت وردپرس را به ریکپچای(Invisible reCaptcha) گوگل بسپارید! و آموزش پیاده سازی کپچای گوگل در وردپرس بدون نصب افزونه به آن پرداختیم.

راه حل چهارم که هدف این مقاله است افزودن یک فیلد مخفی به فرم های وب است، این روش برای مقابله با اسپمرهای خودکار(Automated Spammers) یا ربات های اسپم بسیار مناسب است.

کار را شروع می کنیم، ابتدا فیلد زیر را به فرم مدنظرتان مثلا تماس با ما اضافه کنید.

<div style="display: none">
    <label for="secondary_email">Your Secondary Email:</label>
    <input type="text" name="secondary_email" id="secondary_email"/>
</div>

می توانید یک کلاس CSS برای این فیلد تعریف کرده و از طریق CSS آن را مخفی کنید.

<div class="check-visitor">
    <label for="secondary_email">Your Secondary Email:</label>
    <input type="text" name="secondary_email" id="secondary_email"/>
</div>
.check-visitor{
    display: none;
}

یا با jQuery این کار را انجام دهید.

$(document).ready(
    $('.check-visitor').hide();
); 

حالا کافی است هنگام سابمیت فرم از طریق PHP مقدار فیلد secondary_email را بررسی کنید، اگر فیلد خالی باشد یعنی یک بازدیدکننده واقعی فرم را برای شما ارسال کرده در غیر این صورت بازدیدکننده ربات اسپم بوده است.

if( !empty( $_POST['secondary_email'] ) ) {
	// ربات اسپم
} else {
	// بازدیدکننده واقعی
}

جمع بندی

هنگامی که ربات های اسپم به صفحه تماس با ما مراجعه می کنند کدهای HTML صفحه را بررسی و فیلدها را تکمیل می کنند، آنها متوجه این موضوع نمی شوند که شما یکی از فیلدها را مخفی کرده اید.

البته برخی ربات های اسپم هوشمندتر شده اند و می توانند کدهای جاوا اسکریپت و CSS را پردازش کنند، بنابراین بهتر است فیلد مدنظرتان را به صورت همزمان با CSS و JS مخفی کنید.

برچسب ها
سعید یاورنیا 118 نوشته 130 دیدگاه

توسعه دهنده PHP و Wordpress
توسعه وب سایت یکی از کارهایی است که تلاش می کنم تخصصم رو در اون بالا ببرم، یادگیری تکنولوژی های جدید یکی از چالش هایی است که به شدت به آن علاقمند هستم.

دیدگاه ‌ها

دیدگاهتان را بنویسید.

نشانی ایمیل شما منتشر نخواهد شد، بخش‌های موردنیاز با * مشخص شده‌اند.