カードテスト(card testing)とは、あなたのチェックアウトを使って、盗まれたカードのうちどれがまだ使えるかを調べる行為です。誰かがカード番号のリストを買い、少額決済やカードの保存でまとめて試し、決済代行会社が受け付けたものを手元に残します。Stripe は別名として carding、account testing、enumeration、card checking を挙げています。OWASP はこれを carding と呼び、「盗まれた大量の決済カードデータの有効性を確かめるための、複数回の決済承認の試行」と定義しています。リストは大量に試してこそ価値があるため、これはスクリプトで行われます。
カードテストの損失
- 不正利用の申し立て。テスト決済の一部は成功し、カード会員がそれに気付いて不正と報告します。その一つひとつが手数料のかかる申し立てになり得ます。
- 本当の顧客の決済。あなたの事業に結び付いた何千もの拒否によって、カード発行会社はあなたの決済をすべてより危険なものと見るようになります。Stripe は、テストが止んだ後でも正当な決済が拒否されやすくなることがあると警告しています。
- 手数料と負荷。一部の料金プランでの承認手数料と、サーバーと決済代行会社が応答しなければならない大量のリクエストです。
- カードブランドの監視。Visa はこれを数えています。2025 年 6 月から、同社の加盟店契約会社向けモニタリングプログラムは、enumeration と判定された承認が全承認の 20% に達し、かつそれが 1 か月に 30 万件以上ある加盟店を指摘します。
- あなたの数字。テスターの少額決済が、データの上では新規顧客に見えてしまいます。
決済にどう現れるか
Stripe はよくある兆候を次のように挙げています。
- 失敗またはブロックされた決済の急増
- 拒否されたリクエストの急増(その多くは一般的な拒否)
- 少額決済の増加(意味をなさない名前やメールアドレスのものが多い)
決済だけでなく、カードの登録も見てください。Stripe によれば、テスターはカードの登録を好みます。アカウントに保存されたカードは通常カード会員の明細に表示されないため、誰にも報告されないからです。
一つの対策では足りない理由
テスターはカード、アドレス、セッションを入れ替えるため、IP アドレスのような一つのシグナルによるフィルターだけでは通常は不十分だと Stripe は述べています。Stripe が勧めるのは、カードを保存するルートと決済を受け付けるルートでの対策の組み合わせです。サーバー側で検証する CAPTCHA、決済前のログイン、レート制限、そしてそれらの組み合わせです。どれも手順を一つ増やし、その手順はスクリプトだけでなく購入者にもかかります。
請求の前に問い合わせる
カードテストのスクリプトは通常、決済ルートに直接送信し、チェックアウトページを一度も読み込みません。Bot Protection は、サーバーが決済代行会社を呼び出す前にリクエストを判定します。そしてそのルートでは、ページが本当に訪問されたことの証明を求められます。タグを必要とするアクションです。カードに請求する送信、カードを保存する送信、ギフトカードを使う送信に付けてください。そのうえでクラスに応じて対応します。
bot_high:カードが拒否されたときと同じメッセージで断るか、おとりの応答を返します。スクリプトは自分のカードについて何も知ることができません。bot:まず 3-D Secure のような独自の確認を求めるか、購入者にチャレンジページを通ってもらいます。unknown、human、human_high:通常の決済です。
monitor mode から始めてください。誰も止められず、各応答は block mode なら何をしたかを示すので、オンにする前にチェックアウトのリクエストのうちどれだけがスクリプトかがわかります。ルートごと、言語ごとの設定の全体はチェックアウトの保護にあります。
決済の後
Stripe の勧めのとおり、通ってしまった少額決済は、カード会員が申し立てる前に返金してください。そのうえで決済の結果をフィードバックとして送り返します。チャージバックや確定した不正は同じブラウザについての次の判定に重くのしかかり、良い顧客はそれを引き上げます。
fail-open を守る
チェックはチェックアウトの中にあるので、決してそれを止めてはいけません。短いタイムアウトを使い、どんなエラーでも購入者を通してください。障害中のわずかなテスト決済は、応答しないチェックアウトより安く済みます。詳しくはボットチェックが fail-open でなければならない理由をご覧ください。
出典
2026 年 10 月 28 日に確認。