آموزش ساخت سیستم مدیریت Google reCAPTCHA

آموزش ساخت سیستم مدیریت Google reCAPTCHA با PHP

آموزش ساخت سیستم مدیریت Google reCAPTCHA با PHP

در دنیای امروز، امنیت وب‌سایت‌ها و جلوگیری از حملات رباتیک از اهمیت بالایی برخوردار است. یکی از ابزارهای رایج و موثر برای مقابله با این تهدیدات، استفاده از Google reCAPTCHA است. این سیستم با تشخیص تفاوت بین کاربران انسانی و ربات‌ها، از سوء استفاده‌های احتمالی جلوگیری می‌کند. در این مقاله، به آموزش گام به گام ساخت یک سیستم مدیریت Google reCAPTCHA با استفاده از زبان PHP خواهیم پرداخت.

بخش اول: مقدمه و پیش‌نیازها

Google reCAPTCHA دو نسخه اصلی دارد: reCAPTCHA v2 و reCAPTCHA v3. reCAPTCHA v2 معمولاً شامل یک چالش بصری (مانند انتخاب تصاویر) یا یک چک‌باکس “من ربات نیستم” است. reCAPTCHA v3 به جای چالش، یک امتیاز ریسک به هر درخواست اختصاص می‌دهد که به شما امکان می‌دهد تصمیم بگیرید که آیا یک درخواست را مجاز بدانید یا خیر.

در این آموزش، ما بر روی پیاده‌سازی reCAPTCHA v2 تمرکز خواهیم کرد، زیرا این نسخه ساده‌تر و رایج‌تر است. برای شروع، شما به موارد زیر نیاز دارید:

  • یک حساب کاربری Google
  • یک وب‌سرور با PHP فعال
  • دسترسی به یک پایگاه داده (مانند MySQL) برای ذخیره کلیدهای reCAPTCHA

بخش دوم: دریافت کلیدهای reCAPTCHA

برای استفاده از reCAPTCHA، شما باید کلیدهای API را از Google دریافت کنید. مراحل انجام این کار به شرح زیر است:

  1. به وب‌سایت Google reCAPTCHA Admin مراجعه کنید.
  2. با حساب کاربری Google خود وارد شوید.
  3. روی دکمه “Add site” کلیک کنید.
  4. نام دامنه وب‌سایت خود را وارد کنید (به عنوان مثال، example.com).
  5. نوع reCAPTCHA را انتخاب کنید (reCAPTCHA v2).
  6. روی دکمه “Register” کلیک کنید.
  7. پس از ثبت نام، دو کلید API دریافت خواهید کرد:
    • Site key: این کلید را در فرم HTML خود استفاده خواهید کرد.
    • Secret key: این کلید را در کد PHP سمت سرور خود استفاده خواهید کرد.

کلیدهای API را در یک مکان امن ذخیره کنید و از به اشتراک گذاشتن کلید Secret با دیگران خودداری کنید.

بخش سوم: پیاده‌سازی reCAPTCHA در فرم HTML

برای نمایش reCAPTCHA در فرم HTML خود، از کد زیر استفاده کنید:

<form action="process.php" method="post">
    <label for="name">نام:</label>
    <input type="text" id="name" name="name" required><br>

    <label for="email">ایمیل:</label>
    <input type="email" id="email" name="email" required><br>

    <div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>

    <input type="submit" value="ارسال">
</form>

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

نکات مهم:

  • جایگزین YOUR_SITE_KEY با کلید Site key که از Google دریافت کرده‌اید.
  • اسکریپت reCAPTCHA را در انتهای تگ <body> قرار دهید.
  • کلاس g-recaptcha برای نمایش ویجت reCAPTCHA ضروری است.

بخش چهارم: پردازش پاسخ reCAPTCHA در PHP

پس از ارسال فرم، شما باید پاسخ reCAPTCHA را در کد PHP سمت سرور خود بررسی کنید تا مطمئن شوید که کاربر یک انسان است. کد PHP زیر را در فایل process.php قرار دهید:

<?php
// کلید Secret خود را در اینجا قرار دهید
$secret = 'YOUR_SECRET_KEY';

// بررسی کنید که آیا درخواست POST است
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // دریافت پاسخ reCAPTCHA از فرم
    $recaptcha = $_POST['g-recaptcha-response'];

    // ساخت URL برای درخواست به API reCAPTCHA
    $url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $secret . '&response=' . $recaptcha;

    // ارسال درخواست به API reCAPTCHA
    $response = file_get_contents($url);

    // رمزگشایی پاسخ JSON
    $data = json_decode($response, true);

    // بررسی کنید که آیا پاسخ معتبر است
    if ($data['success'] == true) {
        // پاسخ reCAPTCHA معتبر است، پردازش فرم را ادامه دهید
        $name = $_POST['name'];
        $email = $_POST['email'];

        // انجام عملیات مورد نظر با داده‌های فرم (مانند ذخیره در پایگاه داده)
        echo "فرم با موفقیت ارسال شد. نام: " . $name . ", ایمیل: " . $email;
    } else {
        // پاسخ reCAPTCHA نامعتبر است، خطا را نمایش دهید
        echo "خطا: reCAPTCHA نامعتبر است. لطفاً دوباره امتحان کنید.";
    }
} else {
    // درخواست POST نیست، خطا را نمایش دهید
    echo "خطا: درخواست نامعتبر است.";
}
?>

نکات مهم:

  • جایگزین YOUR_SECRET_KEY با کلید Secret key که از Google دریافت کرده‌اید.
  • تابع file_get_contents() برای ارسال درخواست به API reCAPTCHA استفاده می‌شود.
  • تابع json_decode() برای رمزگشایی پاسخ JSON از API reCAPTCHA استفاده می‌شود.
  • بررسی کنید که مقدار success در پاسخ JSON برابر با true باشد تا مطمئن شوید که پاسخ reCAPTCHA معتبر است.

بخش پنجم: ذخیره کلیدهای reCAPTCHA در پایگاه داده

به جای قرار دادن کلیدهای Secret و Site key به صورت مستقیم در کد PHP، بهتر است آنها را در پایگاه داده ذخیره کنید. این کار امنیت برنامه شما را افزایش می‌دهد و امکان تغییر کلیدها را بدون نیاز به ویرایش کد فراهم می‌کند.

برای ذخیره کلیدها در پایگاه داده، یک جدول با ساختار زیر ایجاد کنید:

CREATE TABLE recaptcha_keys (
    id INT AUTO_INCREMENT PRIMARY KEY,
    site_key VARCHAR(255) NOT NULL,
    secret_key VARCHAR(255) NOT NULL
);

سپس، کلیدهای Site key و Secret key را در این جدول ذخیره کنید. در کد PHP خود، به جای استفاده از مقادیر ثابت، کلیدها را از پایگاه داده بازیابی کنید.

بخش ششم: نکات تکمیلی و بهینه‌سازی

در اینجا چند نکته تکمیلی و بهینه‌سازی برای استفاده از reCAPTCHA در وب‌سایت خود ارائه می‌شود:

  • استفاده از reCAPTCHA v3: اگر به دنبال یک تجربه کاربری بهتر هستید، می‌توانید از reCAPTCHA v3 استفاده کنید. این نسخه به جای چالش، یک امتیاز ریسک ارائه می‌دهد که به شما امکان می‌دهد تصمیم بگیرید که آیا یک درخواست را مجاز بدانید یا خیر.
  • تنظیم آستانه ریسک: در reCAPTCHA v3، می‌توانید آستانه ریسک را تنظیم کنید تا حساسیت سیستم را کنترل کنید.
  • استفاده از CAPTCHAهای جایگزین: در صورت نیاز، می‌توانید از CAPTCHAهای جایگزین (مانند CAPTCHAهای مبتنی بر تصویر یا صدا) در کنار reCAPTCHA استفاده کنید.
  • مانیتورینگ و گزارش‌گیری: به طور منظم عملکرد reCAPTCHA را مانیتور کنید و گزارش‌های مربوطه را بررسی کنید تا از صحت عملکرد سیستم اطمینان حاصل کنید.

بخش هفتم: نتیجه‌گیری

در این مقاله، به آموزش گام به گام ساخت یک سیستم مدیریت Google reCAPTCHA با استفاده از زبان PHP پرداختیم. با پیاده‌سازی این سیستم، می‌توانید از وب‌سایت خود در برابر حملات رباتیک محافظت کنید و امنیت آن را افزایش دهید. به یاد داشته باشید که امنیت وب‌سایت یک فرآیند مداوم است و باید به طور منظم به روز رسانی و بهبود یابد.