# 保护自己免受银行卡测试攻击

了解这类欺诈活动及如何保护自己。

银行卡测试攻击是一种欺诈活动，攻击者试图确认被盗银行卡信息是否有效，以便利用这些信息进行购买。欺诈分子可能通过购买被盗信用卡信息，然后尝试验证这些银行卡或使用其进行支付，以确定哪些银行卡仍然有效。银行卡测试攻击也常被称为“盗卡”(carding)、“账户测试攻击”(account testing)、“枚举攻击”(enumeration) 和“银行卡检查”(card checking)。

银行卡测试等欺诈活动是在线商务不可避免的一个部分。但是，银行卡测试会对整个支付生态带来负面影响，因此商家、信用卡组织和 Stripe 都有责任防止这种情况的发生。在 Stripe，我们不断改进我们的欺诈检测和缓解工具和系统，但您也必须对欺诈保持警惕。

## 银行卡测试是怎样一个过程

银行卡测试者会同时利用银行卡设置和支付操作，判断其掌握的被盗或枚举出的银行卡信息是否有效。为了快速验证大量银行卡号，欺诈分子会使用脚本一次性测试大量银行卡信息，并收集 3DS 或发卡行响应，以确认哪些银行卡信息有效。识别出有效银行卡后，他们可能利用这些银行卡在商户处进行交易获利，或在暗网上转售已确认有效的银行卡信息。

- **银行卡设置**：这是欺诈分子偏好的一种手段，因为在银行卡设置过程中进行的银行卡验证和授权通常不会显示在持卡人的账单上。这降低了持卡人发现并举报欺诈活动的可能性。
- **支付**：银行卡测试者会创建小额支付交易，因为持卡人不太可能注意到这些交易并将其报告为欺诈。

## 银行卡测试后果

银行卡测试有许多负面后果，其中一些会随着银行卡测试的持续而随着时间变得更糟：

- **争议** — 很多类型的银行卡测试会涉及到付款，其中一些支付会成功。客户注意到付款成功并将其报告为欺诈，这会导致[早期欺诈预警](https://docs.stripe.com/disputes/measuring.md#early-fraud-warnings)甚至[欺诈性争议](https://docs.stripe.com/disputes.md)，从而浪费您的时间和金钱。
- **支付拒绝率升高**——银行卡测试攻击会给您的商家带来大量支付拒绝。支付拒绝率较高可能会损害您的商家在发卡机构和卡组织中的声誉，使得您的所有交易看起来风险更高。这可能会导致合法付款的支付拒绝率增加，甚至在银行卡测试攻击停止后依然如此。
- **额外费用**— 银行卡测试活动可能会产生额外费用，例如自定义定价方案的授权费用以及争议费用。
- **基础设施紧张**— 银行卡测试通常会导致大量网络请求和操作。这种额外的流量可能会使您的基础设施不堪重负，并干扰合法活动。
- **损害生态系统健康** — 银行卡测试会对整个金融系统带来负面影响，因此 Stripe 和我们的金融合作伙伴都希望帮您阻止这种行为。例如，大量导致早期欺诈预警或争议的银行卡测试可能会将您纳入[银行卡监控计划](https://docs.stripe.com/disputes/monitoring-programs.md)。
- **降低业务运营的数据质量** — 来自银行卡测试的收入在您的数据中貌似不错的新客户，因此您很难清楚地看到实际业务增长。

## 活动卡测试检查表

如果您的集成被测卡分子利用，那么建议您立即采取以下措施：

- [识别](https://docs.stripe.com/disputes/prevention/card-testing.md#identify-card-testing) 银行卡测试活动。
- [退还](https://docs.stripe.com/refunds.md)欺诈性付款，以避免争议。
- [使用 Stripe 推荐的集成](https://docs.stripe.com/disputes/prevention/card-testing.md#optimize-integration)或添加[缓解措施](https://docs.stripe.com/disputes/prevention/card-testing.md#control-implementation)来抑制银行卡测试。
- 监测您的集成，确保缓解措施有效。

## 识别银行卡测试

您可以通过授权失败和付款次数的显著增加来识别大多数银行卡测试活动。大多数攻击在您的 Stripe 管理平台中都能明显看出来。需要注意的常见症状是：

- \**失败或被阻止的付款激增。**您可以在[管理平台首页](https://dashboard.stripe.com/dashboard)、[交易](https://dashboard.stripe.com/payments)列表视图中查看趋势，还可以在付款详情页面查看阻止原因。
- **带 402 错误的请求激增**。您可以在[开发人员](https://dashboard.stripe.com/developers)页面查看交易量峰值，在[失败日志](https://dashboard.stripe.com/logs?error_type=card_error)页面检查 402 个故障，或者侦听 webhook 和 API 响应，尤其是有 [generic_decline 结果](https://docs.stripe.com/declines/codes.md)的情况。
- 交易金额低的**可疑付款激增**，通常附有无意义的客户姓名和电子邮件地址。为避免争议，我们建议在这些可疑交易未通过现有防御措施时进行退款。

## 防止银行卡测试

测卡分子使用多种方法使其欺诈活动难以被阻止。因此，简单的防火墙规则或基于单个启发式方法（如 IP 地址）的过滤器通常不足以阻止银行卡测试。

测卡分子可能使用您的公钥，并用它在您的网站上重试大量付款。对于此类攻击，您有两种主要的缓解策略：

- **使用推荐的 Stripe 集成**：选择 Stripe 推荐的集成，以利用我们验证有效的银行卡测试攻击防护功能。
- **控制实施**：投入一系列控制措施，防止银行卡测试者攻击存在漏洞的端点。

除了实施缓解策略外，您还要确保密钥安全，并且不要公开发布您的私钥。当您的凭据泄露或被盗时，测卡分子可以使用您的密钥创建付款并设置银行卡。

> 如果您不是开发者，或者您使用的是插件或平台，防止和缓解银行卡测试攻击通常需要进行代码级修改。请将本文档提供给编写相关代码的开发者或供应商，并与他们合作防范银行卡测试攻击。

### 使用 Stripe 推荐的集成

如果您使用最新的 Stripe Payment Element 或 Checkout，我们提供了许多自动化和人工控制措施来缓解银行卡测试攻击，包括速率限制器、AI 模型、CAPTCHA 触发机制、持续审查等。当我们检测到您正在遭受银行卡测试攻击时，我们会动态选择干预措施，以尽可能遏制攻击，同时仍允许合法用户在您的账户上进行交易，并将影响降至最低。您会看到这些支付被标记为 `Blocked by Stripe`。

*然而，Stripe 风控措施的效果取决于您的集成方式以及您向我们发送了哪些风险因素*。我们会使用多种风险因素来区分银行卡测试攻击与合法支付。虽然其中一些风险因素我们会自动计算，但许多因素依赖于您的集成所提供的信息。总的来说，您的集成提供的数据越多，防范银行卡测试攻击的效果就越成功。

我们建议使用 Stripe 的[推荐集成方案](https://docs.stripe.com/payments/online-payments.md#compare-features-and-availability)之一，以利用基于 [CAPTCHA](https://www.hcaptcha.com/) 的自动化保护。现代的 CAPTCHA 解决方案会综合多种风险因素，对高风险行为增加验证难度，同时对服务的合法用户几乎保持无感。如需选择停用我们的 CAPTCHA 集成，请联系 [Stripe 支持团队](https://support.stripe.com/contact/login)。

建议您使用我们推荐的支付集成方案，以便充分利用 Stripe 的银行卡测试攻击防范功能。如果无法使用推荐方案，请尽可能提供更多的数据，或者自行部署风控机制。需要注意的是，虽然银行卡测试攻击防范与 Radar 的欺诈类争议保护是两套独立的机制，但前者同样能从 [Radar 所用的风险因素](https://docs.stripe.com/radar/optimize-risk-factors.md) 中获益。

在您的支付中包含以下信息，可能会显著影响 Stripe 银行卡测试攻击检测模型的性能。我们推荐的集成方式可帮助您收集这些信息，而直接集成可能需要明确包含这些数据。

- [高级欺诈检测](https://docs.stripe.com/disputes/prevention/advanced-fraud-detection.md) (影响等级最高)
- IP 地址
- 客户邮箱
- 客户名称
- 账单地址

### 控制实施

向目标端点添加限制有助于抑制和防止银行卡测试。实施的限制会使银行卡测试变得不切实际，同时对您的合法流量的影响很小甚至根本没有影响。

测卡分子瞄准的端点通常允许他们执行下列某项操作：

- 保存银行卡。
- 进行付款。

根据您的情况和业务需求的不同，向集成中添加的具体安全措施也会有所不同。下面我们介绍几种常见的方法。

### 实现 CAPTCHA

测卡分子经常使用 CAPTCHAS 可能阻止的自动化脚本。如果您没有使用支持 CAPTCHA 的推荐集成之一，那么这些脚本特别有效。现代 CAPTCHAS 解决方案根据您的需求，提供可见和不可见两种 CAPTCHAS 选项。如果您向集成中添加了 CAPTCHAS，但银行卡测试未停止，则检查以下内容：

- 确保验证码对所有启用了银行卡验证请求或 Stripe 的付款请求进行验证。
- 查看 CAPTCHA 文档，确保您已在服务器端实现了该功能。
- 如果您使用的 CAPTCHA 解决方案提供分数，则调整阻止请求成功的阈值。
- 尝试不同的验证码解决方案，例如从不可见验证码切换为可见验证码，或者完全使用不同的验证码解决方案。

### 限制对您的支付表单的访问

欺诈者越容易访问您的支付表单（例如，使用访客结账），他们就越容易发起银行卡测试攻击。您可以通过要求登录或会话验证来降低银行卡测试者的攻击风险。[防止跨站请求伪造 (CSRF) 攻击的保护措施](https://owasp.org/www-project-cheat-sheets/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html)对某些类型的银行卡测试也有效，如 CSRF 令牌。

### 添加速率限制

在某些情况下，您可以通过添加网络速率限制来减少银行卡测试（例如，在网店前端）。调整这些速率限制，以停止您正在经历的特定类型的银行卡测试。例如，如果测卡分子通过将卡绑定到新客户来验证卡，则限制 1 天内单个 IP 地址可以创建的新客户数量就是一种有效的阻止方法。

除了卡组织速率限制之外，您还可以向付款和购物车结账流程添加速率限制，以[检测和防止异常行为](https://docs.stripe.com/disputes/prevention/card-testing.md#prevent-unusual-behavior)，即使在登录或注册后也是如此。

### 检测和防止异常行为

使用管理平台、[Webhook](https://docs.stripe.com/webhooks.md) 或通过 [Stripe Sigma 或 Data Pipelines](https://stripe.com/guides/improve-fraud-management-with-radar-for-fraud-teams-and-stripe-data) 进行持续监控，以追踪您流量中的异常情况。您可以将银行卡测试攻击活动与典型的合法流量进行比较，然后构建仅限制或阻止银行卡测试攻击活动的过滤器。

例如，您可以对系统进行如下更改：

- 限制可添加到账户的银行卡数量
- 限制通过单个 IP 地址可创建的客户数量
- 限制可以使用同一产品进行的购买次数
- 限制可创建的同类型客户的数量
- 用某些用户代理或其他参数过滤请求

为此，如果[您的方案](https://docs.stripe.com/radar/how-radar-works.md#compare-plans)支持此功能，您可以在 Radar 中使用[自定义规则](https://docs.stripe.com/radar/rules/reference.md#velocity-rules)。

### 使用组合缓解措施

结合多种方法减少卡片测试以最大化对欺诈活动的影响，同时不对合法流量产生负面影响可能是有意义的。例如，您可以结合验证码和速率限制，使来自 IP 地址的首次付款尝试无限制成功，但同一 IP 地址在接下来几小时内发出的后续请求需要验证码验证才能成功。

### 谨慎重试

如果支付重试（催款）出现极端峰值且成功率较低，过度重试可能会被识别为银行卡测试攻击。催款行为和真实的银行卡测试攻击可能会对您的业务产生类似影响，包括发卡行提高风险控制力度。请确保在发生银行卡测试攻击后，不要继续对已关联欺诈客户的银行卡进行重试，因为这会重复原始攻击行为。Stripe [Smart Retries](https://docs.stripe.com/billing/revenue-recovery/smart-retries.md#non-retryable-decline-codes) 已考虑这一因素。

### 根据您的风险偏好定制保护措施

除了实施缓解措施之外，您可能还希望使用 Radar 进一步微调您的保护措施。它带有基于[银行检查](https://docs.stripe.com/radar/rules.md#traditional-bank-checks)的内置规则，例如 *CVC* (The card verification code (CVC) or card verification value (CVV) is a three- or four-digit number printed directly on a card used to verify the entered card number) 检查。

如果您了解您的客户行为，并希望详细自定义付款频率，且[您的方案](https://docs.stripe.com/radar/how-radar-works.md#compare-plans)支持此功能，那么您可以在 Radar 中构建[自定义规则](https://docs.stripe.com/radar/rules/reference.md#velocity-rules)。

您可以在 [Radar 101 指南](https://stripe.com/guides/radar-rules-101#rules-that-help-prevent-card-testing-or-card-cashing)中找到相关示例。

## See also

- [高级欺诈检测](https://docs.stripe.com/disputes/prevention/advanced-fraud-detection.md)
- [优化您的 Radar 集成](https://docs.stripe.com/radar/optimize-risk-factors.md)
- [保证您的密钥安全](https://docs.stripe.com/keys-best-practices.md)
- [Radar 101 指南](https://stripe.com/guides/radar-rules-101)
