Ana içeriğe atla
createChallenge(), ribaunt’tan içe aktarılır ve bir veya daha fazla iş kanıtı challenge token’ı oluşturmak için sunucu tarafında çağrılır. Her token, tarayıcı çözücüsünün çözüp üzerinde çalıştığı imzalı bir JWT’dir.

İçe aktarma

import { createChallenge } from 'ribaunt';

İmza

function createChallenge(
  difficulty?: number,
  amount?: number,
  ttlSeconds?: number
): ChallengeToken[]

Parametreler

difficulty
number
varsayılan:"5"
SHA-256 hash’inde gereken öndeki sıfır onaltılık basamak sayısı. Her artış çözüm süresini kabaca iki katına çıkarır. 6’nın üzerindeki değerler tarayıcıların donmasına neden olabilir.
amount
number
varsayılan:"4"
Oluşturulacak challenge token sayısı. Daha fazla challenge, toplam iş kanıtını artırır ancak aynı zamanda ağ bant genişliğini de artırır.
ttlSeconds
number
varsayılan:"30"
Saniye cinsinden challenge token ömrü. Süre dolduktan sonra gönderilen token’lar verifySolution tarafından reddedilir.

Dönüş değeri

ChallengeToken[] döndürür — imzalı JWT dizelerinden oluşan bir dizi. Bu diziyi tarayıcıya { challenges: tokens } olarak gönderin.

Örnek

import { createChallenge } from 'ribaunt';

// Fast: low difficulty, short TTL (login forms, comment boxes)
const fast = createChallenge(4, 4, 30);

// Moderate: standard configuration for most use cases
const moderate = createChallenge(5, 4, 120);

// High: sensitive actions (account creation, password reset)
const high = createChallenge(5, 8, 120);

Önerilen ayarlar

Kullanım durumuZorlukMiktarTTL
Hızlı / arka plan4430
Orta / form gönderimi5460
Yüksek / hassas eylemler58120

Doğrulama

createChallenge() her üç parametreyi de çalışma zamanında doğrular ve herhangi bir değer geçersizse hata fırlatır:
  • difficulty — sonlu bir sayı ve en az 1 olmalıdır. Kesirli değerler Math.floor() ile aşağı yuvarlanır.
  • amount — sonlu bir sayı ve en az 1 olmalıdır. Kesirli değerler Math.floor() ile aşağı yuvarlanır.
  • ttlSeconds — sonlu bir sayı ve en az 1 olmalıdır. Kesirli değerler Math.floor() ile aşağı yuvarlanır.
Kullanıcı kontrolündeki istek parametrelerinin doğrulama olmadan doğrudan createChallenge()’a akmasına asla izin vermeyin.
RIBAUNT_SECRET’in bir ortam değişkeni olarak ayarlanmasını gerektirir. Gizli anahtar eksikse createChallenge() hata fırlatır.