Korzen
Bot Protection

他のサイト上のウィジェット

お客様が自分のサイトに埋め込むウィジェット(予約フォーム、ショップ、チケット販売など): フレーム内のタグ、ページが送るトークン、どのドメインが数えられるか。

ウィジェットは自分のものではないサイトで動きます。お客様が予約フォーム、ショップ、チケット販売を自分のページに埋め込むからです。Bot Protection はそこでも動きますが、正しく決めるべきことが三つあります。タグがどこで動くか、トークンがどうやってサーバーに届くか、そしてプランがどのドメインを数えるかです。

自分のドメインのフレームで(推奨)

ウィジェットを自分のドメインから配信し、お客様には <iframe> で埋め込んでもらいます。フレーム内のページに、ほかのページと同じように タグ を置きます。すると Bot Protection には、どのサイトが埋め込んでいても自分のドメインが見えます。プランのドメインは一つで、ほかのドメインと同じように確認されます(トップページにタグがあるか、Set-up ページで追加します)。

フレームの中では、ページの Cookie はサードパーティのものです。Chrome、Edge、Firefox は埋め込み元のサイトごとに分けて保持し、Safari は何も保持しません。そのため、そこでは _kz Cookie に頼らず、保護するアクションの前にタグからトークンを取得して自分で送ってください。

const token = await window.korzen?.ready();
await fetch("/api/book", {
  method: "POST",
  headers: { "content-type": "application/json", "x-korzen-token": token || "" },
  body: JSON.stringify(order),
});

サーバーでは、そのヘッダーを Cookie より優先して呼び出しの token に渡します。

const input = fromNodeRequest(req, { ip: (_get, r) => r.ip, path: "/api/book" });
input.token = req.get("x-korzen-token") || input.token;
const decision = await korzen.decide(input);

どの SDK も サーバーからの呼び出し も、同じように token フィールドを受け取ります。フレームのストレージもサイトごとに分かれるため、お客様の二つのサイトにいる同じ訪問者は Bot Protection からは二台のデバイスに見えます。これは欠けたシグナルであり、ボットの証拠にはなりません。

チャレンジページとフレーム

チャレンジページは、フレームが保持しない Cookie を使って訪問者を戻します。フレームの中では、challenge には自分のステップ(CAPTCHA、メールや電話での確認)で応え、フレームのアクションには require_token を付けないでください。各アクションの意味は monitor mode と block mode を参照してください。

お客様のページ上のスクリプト

お客様がフレームなしで貼り付けるスクリプト型のウィジェットは、お客様のページで動きます。この場合タグはお客様のドメインで動き、お客様のドメインはそれぞれプランに数えられ、そのページには自分のサイトキーのタグが必要です。スクリプトは別のオリジンからサーバーを呼び出し、そこでは Cookie が送られません。上のようにトークンをヘッダーで送り、CORS の応答で x-korzen-token を許可してください。

お客様独自のホスト名

お客様が自分に向けるホスト名(tickets.example.jp、CNAME)はお客様のドメインです。上のスクリプトと同じく、プランのドメインの一つとして数えられます。プランが保護するのは最大五つです。お客様のホスト名がそれより多い場合は、自分のドメインのフレームでウィジェットを配信するか、ご連絡ください。