Menyiapkan perlindungan ekspres reCAPTCHA WAF

Dokumen ini menunjukkan cara menyiapkan perlindungan ekspres reCAPTCHA WAF (reCAPTCHA WAF express) di server aplikasi tanpa mengintegrasikan reCAPTCHA JavaScript (web) atau SDK seluler native (iOS atau Android).

reCAPTCHA WAF Express hanya menggunakan sinyal backend untuk membuat skor risiko reCAPTCHA. Anda dapat menggunakan skor risiko ini untuk memutuskan apakah akan melayani permintaan, mengalihkan ke halaman tantangan, atau mencatatnya ke dalam log untuk dianalisis nanti.

Sebelum memulai

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

    Catat ID project Google Cloud Anda untuk digunakan nanti.

  2. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  3. Aktifkan API reCAPTCHA Enterprise.

    Mengaktifkan API

  4. Buat kunci API untuk autentikasi:

    1. Di Konsol Google Cloud, buka halaman Kredensial.

      Buka Kredensial

    2. Klik Create credentials, lalu pilih API key.

    3. Catat kunci API untuk digunakan nanti.

Membuat kunci ekspres reCAPTCHA WAF

Untuk mengimplementasikan perlindungan ekspres reCAPTCHA WAF, buat kunci ekspres reCAPTCHA WAF.

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. gcloud

    Untuk membuat kunci reCAPTCHA, gunakan perintah gcloud recaptcha keys create.

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama situs.
    • INTEGRATION_TYPE: Jenis integrasi. Tentukan score.
    • DOMAIN_NAME: Domain atau subdomain situs yang diizinkan untuk menggunakan kunci. Tentukan --allow-all-domains.
    • WAF_FEATURE: Nama fitur WAF. Tentukan express.
    • WAF_SERVICE: Nama penyedia layanan WAF.

    Jalankan perintah gcloud recaptcha keys create:

    Linux, macOS, atau Cloud Shell

    
    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE
    
    

    Windows (PowerShell)

    
    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE
    
    

    Windows (cmd.exe)

    
    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE
    
    

    Respons berisi kunci reCAPTCHA yang baru dibuat.

    REST

    Untuk informasi referensi API tentang jenis kunci dan jenis integrasi, lihat Kunci dan Jenis integrasi.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama situs.
    • INTEGRATION_TYPE: Jenis integrasi. Tentukan score.
    • DOMAIN_NAME: Domain atau subdomain situs yang diizinkan untuk menggunakan kunci. Tentukan --allow-all-domains.
    • WAF_FEATURE: Nama fitur WAF. Tentukan express.
    • WAF_SERVICE: Nama penyedia layanan WAF.

    Metode HTTP dan URL:

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Isi JSON permintaan:

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
    "wafFeature": "WAF_FEATURE"
      }
      "webSettings": {
        "allowedDomains": "DOMAINS",
        "integrationType": "TYPE_OF_INTEGRATION"
       }
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Anda akan melihat respons JSON seperti berikut:

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
     "integrationType": "SCORE",
    
    },
    "wafSettings": {
      "wafService": "",
      "wafFeature": "EXPRESS"
    
    }
    }
    
    

Rekam kunci ekspres untuk digunakan di lain waktu.

Membuat penilaian

Untuk membuat permintaan dari server aplikasi Anda ke reCAPTCHA Enterprise, buat penilaian menggunakan metode projects.assessments.create.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • API_KEY: Kunci API yang Anda buat untuk autentikasi.
  • EXPRESS_KEY: kunci reCAPTCHA WAF ekspres yang Anda buat untuk aplikasi Anda.
  • USER_IP_ADDRESS: Alamat IP yang ada di permintaan dari perangkat pengguna yang terkait dengan peristiwa ini.
  • HEADER_INFO: Opsional. Header HTTP yang dikirim klien ke server aplikasi Anda.
  • JA3_FINGERPRINT: Opsional. JA3 adalah sidik jari MD5 dari kolom tertentu dari paket hello klien TLS. Untuk informasi selengkapnya, lihat JA3 - Metode untuk membuat profil Klien SSL/TLS.
  • URI_NAME: Opsional. URI yang sedang diakses oleh pengguna.
  • USER_AGENT: Opsional. Agen pengguna yang ada dalam permintaan dari perangkat pengguna yang terkait dengan peristiwa ini.

Metode HTTP dan URL:

POST https://public-preview-recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=API_KEY

Isi JSON permintaan:


{
  "event": {
    "siteKey": "EXPRESS_KEY",
    "express": true,
    "userIpAddress": "USER_IP_ADDRESS",
    "headers": ["HEADER_INFO"],
    "ja3": "JA3_FINGERPRINT",
    "requestedUri": "URI_NAME",
    "userAgent": "USER_AGENT",
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, lalu jalankan perintah berikut:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://public-preview-recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=API_KEY"

PowerShell

Simpan isi permintaan dalam file bernama request.json, lalu jalankan perintah berikut:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://public-preview-recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=API_KEY" | Select-Object -Expand Content

Anda akan melihat respons JSON yang mirip dengan berikut ini:

{
  "name": "projects/123456789/assessments/abcdef1234000000",
  "event": {
    "token": "",
    "siteKey": "6L...",
    "userAgent": "Mozilla/5.0 (X11; CrOS x86_64 13816.55.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.86 Safari/537.36",
    "userIpAddress": "1.2.3.4",
    "express": true,
    "requestedUri": "https://example.com/",
    "firewallPolicyEvaluation": false
  },
  "riskAnalysis": {
    "score": 0.7,
    "reasons": []
  }
}

Langkah selanjutnya