全部文章

测卡欺诈:在第一笔拒付到来之前,你的结账页面究竟经历了什么

9 分钟阅读

还不是拒付,却已经是异常的拒绝潮

某天早上,你的支付后台出现了一些古怪的东西:过去一小时里出现了几十个新注册,每个都添加了一张卡并尝试了一笔小额扣款,大多数都被拒绝了。没有人打电话投诉。没有任何争议款到达。如果你下周再查,可能依然一笔都没有。你很容易把这当成无关紧要的事,当成客服邮箱里的机器人问题,而不是商户账户的支付问题。这种解读是错的,而等它真正产生一笔你能指出来的拒付时,真正要命的损失往往早已在别处发生。

你看到的其实是测卡(card testing):有人把一批偷来或猜测出的卡号,成批地输入你的结账页面,或者你的"添加卡"表单,只是为了弄清楚哪些号码还能用。你的网站不是目标,只是工具。诈骗者并不想买你卖的任何东西;他要的是让你的支付表单免费告诉他,他买来的那份号码清单里,哪些是活卡,哪些是死塑料。

对于经营成人分类广告目录的运营者来说,这一点格外重要,因为通常写给网店商户的建议,默认的是一个走普通支付通道的普通零售商。你的账户几乎肯定走的是高风险支付网关,有自己的保留金条款,也有自己更窄的容忍度,恰好就是针对测卡攻击会制造出的那种拒绝潮。这种机制在哪里都一样;它要你付出的代价却不一样。

这篇文章讲的就是这种机制:测卡到底怎么运作,在出现第一笔争议款之前它实际已经花了你多少钱,为什么高风险账户承受同样一次攻击会比标准账户更惨,以及这周你该在结账流程上改什么,而不是等下一次攻击之后再改。

这一切都不要求你变成反欺诈分析师,只要求你搞清楚后台那次波动到底是什么,不再把它当成背景噪音。

测卡到底是什么,为什么你这样的结账页面正好方便下手

一个买到或扒取了一批卡号的诈骗者,在真正有机会之前就先遇到一个麻烦:这些号码大多数已经作废、被注销或已被举报。拿每一个号码去真实购买中逐一测试会很慢,而且会迅速把合法商户都坑一遍,因为一次被拒的购买恰恰是持卡人会注意到、银行也会标记的那种事。所以诈骗者会找一种更便宜、更安静的方式去问同一个问题:这张卡还活着吗。

安静的方式,是把卡绑定到一个账户,或者跑一次授权检查,而不是真正完成一次购买。Stripe 自己的文档说得很明白:诈骗者更偏好这条路,因为涉及的检查通常不会出现在持卡人的账单上,真正的持卡人也就没有明显的理由去注意并举报什么。当这条路走不通时,备选方案就是一笔小额购买,一两美元,之所以选这个金额,是因为它在一张满是真实消费的账单里,仍然小得足以被忽略过去。

无论哪种方式,这个请求总要落到某个地方,而脚本并不在乎那个地方卖的是什么。它在乎的是表单是否容易触达,以及提交的卡号和一个回应之间是否有任何阻拦。一个允许访客创建账户并绑定卡片的注册流程,如果没有登录门槛、没有验证码(CAPTCHA)、也没有限制单个访客能尝试多少次,不管背后是什么生意,这正是那种表单。

摩根大通(J.P. Morgan)写给商户的这类攻击指南,把选择目标的模式说得很直白:诈骗者寻找没有装备去发现或抵御攻击的商户,常常把他们当作指南里所说的"骡子",也就是一个中间目标,仅仅用来弄清楚一个账户是否仍处于活跃状态。一个规模中小、结账流程精简的分类广告运营者,往往用的是更便宜的高风险网关,不像 Stripe 这样的平台默认就自带验证码和机器学习防护,这样的账户比大型零售商更符合这个描述,原因不在于网站的主题,而在于它能负担得起去建设什么样的防线。

结果就是这样一种欺诈:它和你的广告内容、你的审核、你的广告主是否诚实没有任何关系,却和你的刷卡录入流程对一个无处可去的脚本有多大暴露面,完全相关。

在任何人提出争议之前,这到底已经花了你多少钱

在把这当成问题之前先等一笔拒付出现,这种本能可以理解,但却是错的本能。摩根大通的指南说得直接:不要指望靠拒付流程来发现测卡攻击,因为交易和争议之间的时间窗口足够长,一个网站可能被反复攻击好几次,而没有人意识到问题已经存在。等到第一笔争议款真正到达时,引发它的那次攻击可能早已结束,而第二次攻击可能已经在进行中。

最先到来的代价不是争议款,而是一笔手续费。你的网关代表你发给各卡组织的每一次授权请求,无论是通过还是被拒,都是一笔收单机构会处理、通常也会收费的交易。一个脚本在一小时内打出几百次尝试,损失给你的不是流失的销售额;而是无论结果如何都要付费的授权流量,叠加在你的处理商本来就因为你是高风险账户而收取的固定费或比例费之上。

第二个代价,从非常字面、非常机械的意义上说,是声誉代价:Stripe 的说法是,拒绝率的飙升本身就足以损害发卡机构和卡组织对你生意的判断,让你的每一笔交易在攻击停止之后仍显得更有风险,这可能意味着连合法客户的卡也开始被拒绝。Checkout.com 的指引从收单机构的角度说的是同一件事:高拒绝率会向负责决定对你的账户看得多紧的人发出风险信号,而无论这些拒绝有没有最终变成一笔拒付。

第三个代价,才是最终真正以争议款形式出现的那一个。一次测卡攻击里会有一部分成功,因为其中一些号码确实是绑定在真实人身上的活卡。正是这些成功的小额扣款,持卡人最终会在账单上注意到并举报为欺诈,于是变成你本来等着当第一个信号的那些拒付。至于这些争议款一旦到达,会如何计入你的账户,可以参考究竟是什么真正决定了分类广告网站的争议比率:测卡攻击往往只是一个问题安静的第一幕,你要等到后来才会以这种形式真正遇上它。

为什么高风险账户承受同一次攻击会更惨

那些监控争议比率和欺诈比率的网络层面项目,并不是你的处理商所依靠的第一道防线。在它们之下,是你自己收单机构更窄的内部门槛,这个门槛由它自己设定,恰恰因为如果整个商户组合都靠近那条线,它要对卡组织负责。等到一个账户正式越过某个卡组织公布的门槛之前,收单机构通常早已对自己那个更低、更私密的数字采取了行动,往往是提高保留金或进行人工审查,而不是一份正式点名该项目的通知。

对于一个高风险商户账户来说,那个私密、更早的门槛,正是你每天都生活在其下的那条线;这也是为什么这个账户要承担高风险定价,以及一个普通商户账户没有的保留金条款。一整个周末的测卡拒绝,根本不需要触碰任何卡组织公布过的数字,就足以引发反应:它只需要动一动你自己收单机构本来就比对普通账户更紧盯着的那个数字,而按定义,这是一条更容易被越过的门槛。

保留金本身会加剧问题,而不只是反映问题。一个处理商在拒绝率飙升后的反应,是扣留更大比例的收入,或者扣留更久,这是在从一个本来处理同样交易量就要付出比普通商户更多成本的生意里,抽走它的运营资金。这是你本可以花在防欺诈工具上的钱,那些工具原本可能挡住下一次攻击,而这恰恰是一个资金紧张、精简运营的高风险经营者最容易掉进去的陷阱。

这一切都不意味着你的账户因为你卖的东西而脆弱。它意味着,早在第一笔测试交易触及你的结账页面之前,收单机构就已经在更紧密地盯着你的数字,而测卡攻击正是撼动它所盯着的那个数字最快的方式之一。

这周该检查和改变什么

先弄清楚,你到底会不会注意到。把上个月的拒绝率提取出来,找一找摩根大通直接点出的那种模式:一批新账户在短时间内集中创建,每个都添加一张卡或尝试一笔被拒的小额扣款,常常来自一个很窄的 IP 地址或设备范围。如果你的后台没有让这种模式一眼可见,这本身就是发现:你现在是在依靠几周之后才到达的一笔拒付,来告诉你拒绝日志今天就已经知道的事情。

立刻退款,不要等。如果有任何一笔测试交易成功了,一旦你发现这个模式就立刻退款,而不是等着看持卡人会不会注意到,是你能做的最便宜的事,也是 Stripe 官方测卡应对清单上的第一步。你自己主动发起的退款,和持卡人提出的争议在计入方式上完全不同:这笔扣款永远不会变成一笔拒付,也就永远不会计入争议款到底如何真正解决里所说的那个比率。

打开那些本来就存在的检查。地址验证和 CVV 比对是几乎所有网关都具备的标准功能,但常常被留在宽松的默认设置上,因为收紧它们可能会连带拒绝掉一些合法客户。对于一个本来就承担高风险定价的生意来说,这笔取舍通常值得有意识地去做,而不是留给一个没人真正选择过的默认设置。

把摩擦专门放在账户创建和录卡环节,而不只是结账页面。测卡脚本真正的目标是你的注册和添加卡流程,不是你的购买页面,所以验证码和对单个 IP 地址每天能创建多少账户或卡片的硬性限制,应该先放在那里。直接问你的网关,你具体的套餐到底包含哪些速率和频率限制工具,因为高风险服务商在这方面差异极大,便宜的往往把账户卖给你,却没有普通网关默认就有的那些防护。

最后,不要再告诉被拒的客户他们为什么被拒。暴露一个具体的原因,比如CVV 错误或地址不匹配,恰好给了测卡脚本一块它正缺的拼图,让它能去完善被盗卡记录,磨练下一次尝试。一条通用的拒绝提示,对真正的客户来说没有任何损失,他照样可以打电话给客服;而对诈骗者来说,这恰恰夺走了唯一能让他下一次尝试比上一次更精准的那条信息。

试用 DEMO

伴游目录网站系统,开箱即用