ارسال اسپم به فرم های وب سایت ها یکی از مشکلات بزرگ طراحان و برنامه نویسان وب است . نرم افزارهای زیادی هستند که در وب می خزند و اطلاعات بی ارزش و آزار دهنده را راهی فرم ها می کنند .نرم افزارهای زیادی هم هستند که به مقابله با این ارتش آزار دهنده برخواسته اند . از Captcha های در هم تنیده تا روش های نسبتا ساده که تا حد زیادی جلوی اسپم ها را می گیرند .
در این مقاله می خواهیم یکی از روش های ساده ولی کارامد برای جلویگری از ارسال اسپم در فریم ورک محبوب Laravel را بررسی کنیم و از آن استفاده کنیم .بسته ی مورد نظر ماHoneypot است که در آدرس زیر قرار دارد :
ازHoneypot در کجای سایت می توان استفاده کرد ؟
- فرم های تماس
- فرم های ثبت نام و ورود
- فرم های جستجو و نظرخواهی و …
بسته Honeypot چگونه کار می کند ؟
روش کار Honeypot نسبتا ساده و کارامد است . بدین ترتیب که Honeypot یک فیلد به فرم اضافه می کند که باید خالی بماند ولی اسپمر ها که معمولا همه فیلد ها را پر می کنند این فیلد را نیز پر می کنند و در این صورت Honeypot می فهمد که ارسال کننده فرم یک اسپمر است. همچنین Honeypot زمان ارسال فرم را نیز در نظر می گیرد واگر کاربر سریعا فرم را پر کند به احتمال زیاد اسپمر است .
Honeypot یک سری کد به شکل زیر به فرم تان اضافه می کند:
<div id="my_name_wrap" style="display:none;"> <input name="my_name" type="text" value="" id="my_name"> <input name="my_time" type="text" value="eyJpdiI6InlJTUtFTWFwVWFuNGxMV2lJTjd3XC93PT0iLCJ2YWx1ZSI6ImhVNVlJU2paSlpHY04zNWY3ODJZMFE9PSIsIm1hYyI6IjRmOGIzZDI3YTI0MmE5NGJkNTQzYmU0OGI5YTFmNzBkZDA1OTM0MWEzYWI3ZDU5ZmFmNjdhZWQ3NmY1NjQwYTUifQ=="> </div>
سپس دستور composer update
را اجرا کنید تا فایل های مربوطه دانلود و کپی شوند.
چگونه Honeypot را نصب کنم؟
فایل composer.json
را باز کرده و خط زیر را در بخش require
وارد کنید تا به صورت زیر درآید:
{ "require": { "msurguy/honeypot": "dev-master" } }
سپس فایل config/app.php
را باز کنید و در بخش providers
کد زیر را اضافه کنید:
Msurguy\Honeypot\HoneypotServiceProvider::class,
و در پایین همین بخش در قسمت aliases
کد زیر را وارد کنید:
'Honeypot' => Msurguy\Honeypot\HoneypotFacade::class
خوب حالا کار نصب Honeypot تمام شد . نحوه استفاده از آن را در زیر خواهیم دید.
چگونه از Honeypot در لاراول استفاده کنم؟
با اضافه کردن کد Honeypot::generate(..)
می توانید Honeypot را به فرم های لاراول اضافه کنید مثل این :
برای لاراول 5 و بالاتر :
{!! Form::open('contact') !!} ... {!! Honeypot::generate('my_name', 'my_time') !!} ... {!! Form::close() !!}
برای نسخه های دیگر لاراول :
{{ Form::open('contact') }} ... {{ Honeypot::generate('my_name', 'my_time') }} ... {{ Form::close() }}
سپس باید با استفاده از Validation لاراول ، مقادیر برگشتی Honeypot ار چک کنیم . به صورت زیر :
$rules = array( 'email' => "required|email", ... 'my_name' => 'honeypot', 'my_time' => 'required|honeytime:5' ); $validator = Validator::make(Input::get(), $rules);
دقت کنید که “honeytime” یک پارامتر هم دارد که تعداد ثانیه هایی است که کاربر فرصت دارد فرم را تکمیل کند والا اسپم به حساب خواهد آمد.
امیدواریم با استفاده از این سیستم شاهد اسپم های کمتری در سایت خود باشید . اگر دنبال روش های قوی تری هستید می توانید از reCaptcha استفاده کنید.