قالب وردپرس درنا توس
خانه / کامپیوتر و وب / طراحی وب / Html / جلوگیری از اسپم با ساخت و بررسی CAPTCHA

جلوگیری از اسپم با ساخت و بررسی CAPTCHA

در اکثر سایتها  در فرم های تماس با ما ، اگر مشاهده کرده باشید کد امنیتی تصویری وجود دارد که بصورت تصادفی تولید می شوند و کار رباتها را در پیدا کردن متن تصادفی تولید شده در تصویر سخت تر می کنند، معمولا از این قابلیت برای تشخیص انسان بودن کاربر سایت استفاده می شود زیرا فقط انسان میتواند کاراکترهای داخل تصویر را براحتی تشخیص دهد و در مکان در نظر گرفته شده برای کد امنیتی وارد کند.
چگونه CAPTCHA کار می کند؟
یک کپچا یا CAPTCHA یک رشته تصادفی ایجاد می کند و ان را در یک عکس می نویسد، سپس رشته را در یک session یا cookie یا روش های دیگر ذخیره می کند. رشته تصادفی وقتی فرم و یا عملیات انجام شد چک می شود.
مراحل انجام کار در زیر آمده است:
۱- رشته تصادفی ایجاد می شود
۲- رشته داخل عکس نوشته می شود
۳- رشته داخل session,cookie,database ذخیره می شود.
۴- عکس به کاربر نمایش داده می شود
۵- کاربر کد نمایش داده شده در عکس را وارد می کند.
۶- کد وارد شده توسط کاربر با کد ذخیره شده مقایسه می شود
۷- اگر انها با هم تطبیق داشتند کاری انجام می شود فرضا لاگین به پروفایل کاربری و …
ایجاد کردن رشته تصادفی
برای انجام این کار ما از توابع PHP، microtime() و mktime() برای تولید کردن عدد استفاده خواهیم کرد. این عدد سپس توسط تابع md5() به صورت رمز در می آید. طول رشته به رمز درآمده ۳۲ کاراکتر است، ما با استفاده از تابع substr() طول رشته را به ۵ کاراکتر          می رسانیم. این رشته تصادفی ما است.
<?php
//Start the session so we can store what the code actually is.
Session_start();
//Now lets use md5 to generate a totally random string
$md5=md5(microtime()*mktime());
//We don’t need a 32 character long string so we trim it down to 5
$string=substr($md5,0,5);
?>
بعدا ما این رشته را در عکس می نویسیم و به کاربر نشان می دهیم.
نوشتن متن درون عکس
حال که ما رشته تصادفی را برای نوشتن داریم، ما باید ان را درون عکس بنویسیم و ان را به کاربر نشان دهیم. این کار به آسانی توسط کتابخانه GD انجام می شود.
<?php
$captcha=imagecreatefrompng(“./ariacoders_captcha.png”);
/*
Lets set the colours, the colour $line is used to generate lines.
Using a blue misy colours.The colour codes are in RGB.
*/
$black=imagecolorallocate($captcha,0,0,0);
$line=imagecolorallocate($captcha,250,239,241);
/* Lets add some lines
In (static lines) to attempt to make the bots life a little harder
*/
Imageline($captcha,0,0,40,25,$line);
Imageline($captcha,40,0,20,51,$line);
?>
همانطور که شما در کد بالا میبینید، ما بجای ساختن عکس که خودش می تواند یک پیچیدگی کوچک برای این اموزش باشد، عکس را از فایل ariacoders_captcha.png بارگزاری کرده ایم. وقتی که ما از رنگ در GD استفاده می کنیم، ما باید رنگ را به یک متغیر اختصاص بدهیم، ما با استفاده از تابع imagecolorallocate() این کار را انجام می دهیم. ما از رنگهایی که درون متغیر ذخیره شده است، برای کشیدن خطهایی درون عکس استفاده می کنیم. این، کار شکستن captcha را توسط رباتها را قدری سخت تر می کند. سرانجام ما باید رشته را درون عکس بنویسیم که به آسانی توسط تابع imagestring() انجام می شود. تنها چیزی که باقی می ماند این است که عکس را به خروجی ببریم.
برای اینکار توسط تابع header()،  تنظیمات content type صفحه را به image/png تغییر می دهیم و عکس را توسط تابع imagepng() به مرورگر ارسال می کنیم. رشته به رمز دراورده شده درون آرایه Session ذخیره می شود.
<?php
Imagestring($captcha,5,20,10,$string,$black);
$_SESSION[‘key’]=md5($string);
//Output the image
Header(“Content-type:image/png”);
Imagepng($captcha);
?>
چک کردن اینکه آیا کاربر کد را درست وارد کرده است
برای چک کردن درستی کد وارد شده توسط کاربر اول باید به کاربر اجازه این کار را بدهیم. شما میتوانید برای انجام این کار از ورودی متنی ساده برای وارد کردن کد استفاده کنید، یک ورودی متن ساده باید بخوبی برای این منظور کار کند.
سپس شما باید عکس را با استفاده از تگ <img src=”captcha.php” border=”۰”> به کاربر نشان دهید. ساختن یک فرم شبیه این واقعا یک کار ساده است. حال فرض می کنیم که اطلاعات این فرم ارسال شده است، ما نیاز داریم که کد وارد شده توسط کاربر را با عکس مقایسه کنیم. این کل سیستم CAPTCHA یا کپچا است . شما میتوانید این کارها را در هر فایل PHP استفاده کنید.
برای چک کردن از کد زیر استفاده خواهیم کرد.
<?php
Session_start();
If((md5($_POST[‘verify’])!=$_SESSION[‘key’])||($_SESSION[‘key’]==”” || (!isset($_SESSION[‘key’]))
{
Die(“Error: You must enter the code correctly”);
}
else
{
echo ‘You entered the code correctly’;
}
همانطور که شما میبینید برای مقایسه کردن کد وارد شده توسط کاربر از دستور شرطی if استفاده می کنیم و بخش else در واقع خلاف شرط می باشد.
توصیه های مهم:
CAPTCHA تولیدی در این آموزش امن ترین نمی باشد ولی اگر احساس خطر زیادی می کنید میتوانید روشهای زیر را نیز بکار گیرید.
• از فونتهای TTF استفاده کنید.
• خطها را به طور تصادفی جا به جا کنید
• موقعیت و محل متن درون عکس بصورت تصادفی باشد
• چرخاندن متن بطور تصادفی
• استفاده از لغات به جای آن رشته
منبع:
تهیه و تنظیم : مرتضی صاحب دانشجوی ارشد مهندسی نرم افزار کامپیوتر
راهنمای دانلود

لینک‌های دانلود

راهنمای دانلود

  • برای دانلود، به روی عبارت "دانلود" کلیک کنید و منتظر بمانید تا پنجره مربوطه ظاهر شود سپس محل ذخیره شدن فایل را انتخاب کنید و منتظر بمانید تا دانلود تمام شود.
  • جهت استفاده از فایل های فشرده از نرم افزار WinRar استفاده نموده و به پسورد هر فایل توجه نمایید.
  • در صورت بروز مشکل در دانلود فایل ها تنها کافی است از طریق سیستم گزارش خطا نسبت به بروز مشکل اطلاع دهید تا پیگیری سریع برای حل مشکل اقدام گردد.
  • فایل های قرار داده شده برای دانلود به منظور کاهش حجم و دریافت سریعتر فشرده شده اند، برای خارج سازی فایل ها از حالت فشرده از نرم افزار Win Rar و یا مشابه آن استفاده کنید.
  • کلمه رمز جهت بازگشایی فایل فشرده عبارت www.kolbedanesh.com ( حتما با حروف کوچک تایپ شود ) می باشد. تمامی حروف را میبایستی به صورت کوچک تایپ کنید و در هنگام تایپ به وضعیت EN/FA کیبورد خود توجه داشته باشید همچنین بهتر است کلمه رمز را تایپ کنید و از Copy-Paste آن بپرهیزید.
  • چنانچه در هنگام خارج سازی فایل از حالت فشرده با پیغام CRC مواجه شدید، در صورتی که کلمه رمز را درست وارد کرده باشید. فایل به صورت خراب دانلود شده است و می بایستی مجدداً آن را دانلود کنید.

درباره ی جلال

جلال یاکشی کارشناس مهندسی نرم افزار هستم . برنامه نویسی و مباحث تجارت الکترونیک از علایق همیشگی من بوده و هست و سعی دارم با استفاده از این دانش گامی در جهت بهبود و ترقی بردارم.

مطلب پیشنهادی

آموزش قدم به قدم وردپرس - کلبه دانش

دانلود کتاب آموزش قدم به قدم وردپرس (راه اندازی سایت در پنج دقیقه)

در این مطلب از کلبه دانش دانلود رایگان کتاب آموزش قدم به قدم وردپرس (راه …

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *