😮

reCAPTCHA v3のDOS対策。高額請求を防ぐ

2024/11/26に公開

reCAPTCHA v3 (enterprise想定。他でなるかわからない)では、一評価あたりの値段設定。また、評価自体はサイトのhtmlに書き込んでいるパブリックキーだけで可能。また、サイトのhtmlはDevtoolsなどで簡単に見れる。[1]
つまり、Dosの高額請求攻撃成立!?DDosの効果はないが、ipアドレスごとの制限などの設定項目がないのか調べてみた。しかし、reCAPTCHA Enterpriseコンソールにはない!?
対策しようがないではないか。クライアントサイドだけで評価するのに。とおもったら、よくみたらなんか書いてあった[2]

請求には、その他の reCAPTCHA キー、パスワード チェック、Google Cloud Armor のトークン検証の料金も含まれる場合があります。

reCAPTCHA の一般的な実装は、以下の 3 つの部分で構成されます。

  1. reCAPTCHA JavaScript ファイルの読み込み。 スクリプトはページのコードに追加され、ページの読み込み時に読み込まれます(遅延処理が行われる場合があります)。このステップでは課金されません。
  2. reCAPTCHA トークンの実行 / 作成。
    execute の処理が実行されます。これは、チェックボックス / ウィジェット サイトキー用の「私はロボットではありません」ウィジェットをクリックした後に緑色のチェックボックスが表示されたとき、またはコードが grecaptcha.enterprise.execute を呼び出したときに行われます。このステップでは課金されません。
  3. reCAPTCHA トークンの評価 / 検証。
    評価、つまりトークンの検証が行われます。これは、バックエンドから reCAPTCHA Enterprise API エンドポイントに REST 呼び出しを行うことによって実行されます。Google は、トークンの有効性と操作のリスクに関する判定(スコア、理由コードなど)を返します。トランザクションが完了して判定結果が提示されたら、このステップに基づいて実行するアクション(画像で確認、ブロック、2FA など)を選択できます。評価を作成するための呼び出しごとに、月単位で料金が請求されます。 詳細 。

つまり、サーバー側で認証するまでは、お金はかからないということ。つまり、サーバーサイドのリクエスト自体に手動でipアドレスあたり何分あたり何回みたいな制限をつければ、DDos以外のDosは防げるということだ!(これは果たしていい方法なのだろうか?)また、アクセスできなくなってもそこまで問題ないサイトであれば、一日あたりの上限もサーバーサイドで設定しておけば、DDosの心配もないし、一日あたりそれを超える請求は基本なくなるということ!(可用性DOWN)

あ、ここになんか書いてある。

https://cloud.google.com/recaptcha-enterprise/quotas

1 分あたりのリクエスト数(1IPアドレスごとではない!)は六万回に制限されているみたい。これでも個人からすると高額請求だし、これに達するとサイトのユーザが使えなくなるので、やっぱり手動の対策はなにかすべしだと思う。

英語版

Your bill may also include charges for other reCAPTCHA keys as well as password checks and Google Cloud Armor token verifications.

A typical reCAPTCHA implementation contains 3 parts:

  1. Loading the reCAPTCHA JavaScript file. The script is added to the code of a page, and loads on page load (sometimes deferred). We do not charge for this step.
  2. Executing / creating a reCAPTCHA token.
    An execute is performed. This is either when the user receives a green checkbox after clicking on the "I'm not a robot" widget for checkbox/widget site keys, or when your code calls grecaptcha.enterprise.execute. We do not charge for this step.
  3. Assessment / verification of the reCAPTCHA token.
    An assessment, or a token verification is performed. This is done by making a REST call from your backend to the reCAPTCHA Enterprise API endpoint. Google will then reply with a verdict (score, reason code, etc) about the validity of the token and risk of the interaction. As the transaction is now completed, and the verdict is provided, you may now choose to take an action based on this step (visual challenge, block, 2FA, etc). You are charged on a monthly basis for each call you make to create an assessment. Learn more .
脚注
  1. ブラウザ介さずにhtml取得も可能なので、Devtoolsを使えなくする方法は意味がないし、多分できない ↩︎

  2. 実際に一度は使ってないと(サーバーサイドの評価も必須!)でないみたい ↩︎

Discussion