برنامه ساخت CAPTCHA و اعتبارسنجی کاربر — راهنمای کاربردی

در این مطلب، روش نوشتن برنامه ساخت CAPTCHA و اعتبارسنجی کاربر مورد بررسی قرار گرفته است. 

کپچا چیست؟

کپچا (CAPTCHA) سرنامی برای عبارت «آزمون همگانی کاملاً خودکارشدهٔ تورینگ برای مجزا کردن انسان و رایانه» (Completely Automated Public Turing test to tell Computers and Humans Apart) است. کپچا آزمونی برای تشخیص آن است که کاربر انسان است یا نه (ربات). بنابرین، هدف تولید کپچاهای یکتایی است که صرفا توسط کاربر انسانی قابل تشخیص باشند و بتوانند کپچای صحیح را وارد کنند و ربات‌ها امکان آن را نداشته باشند. همچنین، باید امکان اعتبارسنجی اینکه کپچا به درستی وارد شده است نیز وجود داشته باشد. مثالی در همین رابطه در ادامه آمده است.

CAPTCHA: x9Pm72se
Input: x9Pm62es
Output: CAPTCHA Not Matched

CAPTCHA: cF3yl9T4
Input: cF3yl9T4
Output: CAPTCHA Matched

مجموعه کاراکترها برای تولید کپچا در آرایه‌ای به نام chrs[]‎ ذخیره شده‌اند که حاوی اعداد از ۰ تا ۹ (۹-۰) و حروف الفبای کوچک و بزرگ انگلیسی (a-z و A-Z) است. بنابراین، اندازه آرایه chrs[]‎ برابر با ۶۲ است. برای تولید یک کپچای یکتا در هر بار، یک عدد تصادفی با استفاده از تابع rand()‎ تولید می‌شود؛ این تابع (rand()%62) یک عدد تصادفی را بین ۰ تا ۶۱ تولید می‌کند. عددتصادفی تولید شده به عنوان اندیس برای کاراکتر در آرایه chrs[]‎ به کار می‌رود؛ بدین ترتیب، یک کاراکتر جدید از captcha[]‎ را تولید می‌کند و این حلقه، n (طول کپچا) بار اجرا می‌شود تا CAPTCHA با طول داده شده را تولید کنند.

// C++ program to automatically generate CAPTCHA and 
// verify user 
#include<bits/stdc++.h> 
using namespace std; 
  
// Returns true if given two strings are same 
bool checkCaptcha(string &captcha, string &user_captcha) 
{ 
    return captcha.compare(user_captcha) == 0; 
} 
  
// Generates a CAPTCHA of given length 
string generateCaptcha(int n) 
{ 
    time_t t; 
    srand((unsigned)time(&t)); 
  
    // Characters to be included 
    char *chrs = "abcdefghijklmnopqrstuvwxyzABCDEFGHI"
                  "JKLMNOPQRSTUVWXYZ0123456789"; 
  
    // Generate n characters from above set and 
    // add these characters to captcha. 
    string captcha = ""; 
    while (n--) 
        captcha.push_back(chrs[rand()%62]); 
  
    return captcha; 
} 
  
// Driver code 
int main() 
{ 
    // Generate a random CAPTCHA 
    string captcha = generateCaptcha(9); 
    cout << captcha; 
  
    // Ask user to enter a CAPTCHA 
    string usr_captcha; 
    cout << "\nEnter above CAPTCHA: "; 
    cin >> usr_captcha; 
  
    // Notify user about matching status 
    if (checkCaptcha(captcha, usr_captcha)) 
        printf("\nCAPTCHA Matched"); 
    else
        printf("\nCAPTCHA Not Matched"); 
  
    return 0; 
}

خروجی قطعه کد بالا به صورت زیر است.

CAPTCHA: cF3yl9T4
Enter CAPTCHA: cF3yl9T4
CAPTCHA Matched

اگر این مطلب برای شما مفید بوده است، آموزش‌ها و مطالب زیر نیز به شما پیشنهاد می‌شوند:

منبع [+]

پاسخی بگذارید

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