SilentShieldは、ReactおよびNext.jsアプリ向けの、目に見えないGDPR準拠のCAPTCHA代替手段です。軽量なクライアントスクリプトを読み込み、トークンを取得し、@forge12interactive/silentshield-sdk-jsパッケージと単一のAPIキーを使ってサーバー側で検証します。Cookieもトラッキングも個人データもなく、ホスティングはデフォルトでEU域内のみです。

見えないCAPTCHA — React & Next.js

軽量なSilentShieldスクリプトを使えば、あらゆるReactまたはNext.jsアプリで動作します。送信時にnonceを取得し、バックエンドで@forge12interactive/silentshield-sdk-jsを使って検証します。見えず、GDPRに準拠しています。

React CAPTCHA連携

Developer Experience

フレームワーク非依存 — あらゆるReactまたはNext.jsアプリで動作
軽量なクライアントスクリプト — 重いReactパッケージは不要
nonceベース — 見えず、ユーザー操作は不要
@forge12interactive/silentshield-sdk-js によるバックエンド検証
App Router と Pages Router に対応
TypeScript対応

コード例

クライアントスクリプトの埋め込み

<!-- Add to <head> with SRI for security -->
(function () {
  var KEY = "YOUR_API_KEY";
  var SITE = location.hostname;
  var V = "2025.09.1";
  var s = document.createElement('script');
  s.src = "https://api.silentshield.io/client.js?k=" + encodeURIComponent(KEY)
    + "&v=" + encodeURIComponent(V)
    + "&site=" + encodeURIComponent(SITE);
  s.async = true;
  s.crossOrigin = "anonymous";
  document.head.appendChild(s);
})();

Reactコンポーネント

import React, { useState } from "react";

export default function ContactForm() {
  const [loading, setLoading] = useState(false);
  const [message, setMessage] = useState("");

  const handleSubmit = async (e) => {
    e.preventDefault();
    setLoading(true);

    try {
      // client.js injects a hidden behavior_nonce input into the form —
      // read it from the form data (there is no global SilentShield object).
      const formData = new FormData(e.currentTarget);
      const nonce = formData.get("behavior_nonce");

      // Verify on your backend
      const res = await fetch("/api/verify", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ nonce }),
      });

      const data = await res.json();

      if (res.ok && data.success) {
        setMessage("Successfully verified!");
        // Process form submission
      } else {
        setMessage("Bot detected. Please try again.");
      }
    } catch (error) {
      console.error("Verification failed:", error);
      setMessage("Verification failed. Please try again.");
    } finally {
      setLoading(false);
    }
  };

  return (
    <form onSubmit={handleSubmit}>
      <input type="email" placeholder="Email" required />
      <button type="submit" disabled={loading}>
        {loading ? "Verifying..." : "Submit"}
      </button>
      {message && <p>{message}</p>}
    </form>
  );
}

バックエンド検証(Next.js)

// app/api/verify/route.ts
import { SilentShield } from "@forge12interactive/silentshield-sdk-js";

export async function POST(req: Request) {
  const { nonce } = await req.json();
  const result = await SilentShield.verifyNonce(nonce, process.env.SILENTSHIELD_API_KEY);
  const human = result.ok && result.verdict === "human" && result.confidence >= 0.7;

  if (!human) {
    return Response.json({ error: "Bot detected" }, { status: 403 });
  }

  // Human — process the form
  return Response.json({ success: true });
}

ReactでのSilentShieldの仕組み

SilentShieldは小さなクライアントスクリプトを読み込み、ユーザーがフォームを操作している間に目に見えないチェックを実行します。送信時、あなたのReactまたはNext.jsコンポーネントは生成されたトークンをバックエンドに送信し、そこで@forge12interactive/silentshield-sdk-jsパッケージを使って検証します。ユーザーがパズルを見ることは決してなく、レンダリングすべき重いウィジェットがないため、バンドルは軽量なままです。

クライアントスクリプトとサーバー検証

インストールする独立した@silentshield/react Webパッケージはありません。SilentShieldは、クライアントスクリプトとサーバー側の検証を通じて、あらゆるReactまたはNext.jsアプリで動作します。スクリプトhttps://api.silentshield.io/client.js?k=YOUR_API_KEYを追加し、コンポーネントでトークンを読み取り、route handlerまたはAPIルートからapi-keyヘッダーを使ってhttps://api.silentshield.io/v1/verifyに対して確認します。

セットアップの手順

アカウントを作成し、APIキーをコピーします。SilentShieldクライアントスクリプトをアプリに追加し、フォームが送信されたときにトークンを取得します。サーバーに@forge12interactive/silentshield-sdk-jsをインストールし、APIキーでクライアントを作成し、トークンを使ってverifyを呼び出します。結果が人間であればリクエストを処理し、そうでなければ拒否します。

デフォルトでプライバシーとアクセシビリティに配慮

SilentShieldはCookieを保存せず、トラッキングを行わず、個人データを収集しないため、アプリはGDPRに準拠したままです。検証はデフォルトでEU域内のみのインフラで実行されます。目に見えないチェックはWCAG 2.1 AAを満たしており、視覚的な課題なしにキーボードやスクリーンリーダーの利用者にとってフォームを使いやすく保ちます。

今すぐReactに導入

スクリプトを追加し、@forge12interactive/silentshield-sdk-jsで検証 — 数分で準備完了。

よくある質問

ReactアプリにCAPTCHAをどう追加しますか?

SilentShieldのクライアントスクリプト `https://api.silentshield.io/client.js?k=YOUR_API_KEY` をReactまたはNext.jsアプリで読み込み、送信時にnonceを取得して、`@forge12interactive/silentshield-sdk-js` SDKを使いバックエンドの `https://api.silentshield.io/v1/verify` で検証します。別途のReactウェブパッケージはなく、クライアントスクリプトとバックエンド検証がそのパターンです。

SilentShieldのReactパッケージはありますか?

React専用のWebパッケージはありません。ReactやNext.jsではクライアントスクリプト `https://api.silentshield.io/client.js?k=YOUR_API_KEY` を追加し、挿入された `behavior_nonce` をバックエンドで検証します — 数行のfetch、または公式パッケージ `@forge12interactive/silentshield-sdk-js` を使用できます。モバイルアプリ向けのReact Native SDKは現在リクエストに応じて提供しています(アーリーアクセス)。

SilentShieldはNext.jsとどう連携しますか?

Next.jsでは、SilentShieldのクライアントスクリプトをページに含め、その後 `@forge12interactive/silentshield-sdk-js` SDKを使ってサーバー側 — ルートハンドラーやAPIルート — でnonceを検証します。これは `api-key` ヘッダーで `https://api.silentshield.io/v1/verify` を呼び出します。これにより、フォームを単一のAPIキーで不可視に保護します。

SilentShieldはReact Nativeに対応していますか?

モバイルアプリ向けのReact Native SDKは現在アーリーアクセス中です — [email protected] までリクエストしてください。バックエンド検証は、公式パッケージ `@forge12interactive/silentshield-sdk-js` または `https://api.silentshield.io/v1/verify` へのシンプルなHTTP呼び出しで今すぐ利用でき、ユーザーにパズルを表示せずに自動化された不正を防ぎます。

SilentShieldはReactアプリでGDPR準拠ですか?

はい。フレームワークに関わらず、SilentShieldはデフォルトでEU内にデータをホスティングし、Cookieを設定せず、トラッキングを行わず、仮名化されたデータのみを保存します。Reactフロントエンドは単一のクライアントスクリプトを読み込み、バックエンドがnonceを検証します。個人を特定できる情報は保存されません。

SilentShieldはReactアプリに大きなオーバーヘッドを加えますか?

いいえ。SilentShieldは1つの軽量なクライアントスクリプトを読み込み、ダウンロードする画像アセットはありません。検証は行動シグナルとプルーフ・オブ・ワークのnonceを通じてバックエンドで確認され、第三者へのトラッキング呼び出しがないため、ReactまたはNext.jsアプリへのオーバーヘッドは最小限です。