登录
  • 人们都希望被别人需要 却往往事与愿违
  • 宪法的基本原则是: 个人可以做任何事情, 除非法律禁止; 政府不能做任何事情, 除非法律许可@约翰.洛克 (哲学家 思想家)

Stripe 如何安全收款并避免盗刷与测卡

IT Benny小土豆 3493次浏览 2974字 3个评论
文章目录[显示]

警告⚠️
在大多数国家和地区,盗刷信用卡都是犯罪行为,数额巨大甚至是重罪。请不要以身试法

使用Stripe进行收款是一件非常简单的事情,用起来非常舒适,不想写代码就无代码,会写代码还想自己设计前后端可以用 Stripe Elements。

当你把事情做好了,把你的在线服务上线了,这个时候就一定要考虑一个问题:盗刷与测卡(卡号测试、银行卡测试)。

盗刷很好理解,用偷来的信用卡资料去你的网站上购物;测卡则是用小额交易或者其他方式来确定盗窃来的信用卡是可用的,然后后续再大额诈骗中使用这些信用卡。

毫无疑问,只要是在线电子商务,就一定无法避免盗刷与测卡的。

一个非常重要的事情是,商户、卡组织与Stripe都有责任与义务阻止盗刷和测卡。

也许有人不理解,为什么商户也有责任与义务阻止盗刷和测卡?我就是把 Stripe 的一个Payment Link放到了网上,某个不怀好意的人看到了去盗刷,主动给我送钱,我为什么要负责?

切勿贪小便宜!真正的持卡人发现了异常的付款记录,他们会去找发卡行争议,发卡行就会找到 Stripe,商户就需要应对争议,这期间不仅要承担争议费,在争议比例过高时Stripe还会封号、甚至罚款。

Stripe 如何安全收款并避免盗刷与测卡

所以,遇到来源不明的欺诈付款,一定要全额退款,可不能贪小便宜。

不过如果对方是用支付宝、微信付款的那就不用管了,因为这俩应该是不支持争议的😂


前不久,我“惹毛”了一个黑产论坛。这个黑产论坛的人就开始盗刷+测卡。

Stripe 如何安全收款并避免盗刷与测卡

比如这种,人在新加坡用墨西哥的卡🤨,再考虑到我的用户的大部分都是中国人,所以看起来怎么都很像盗刷。

后来他们盗刷不成还恼羞成怒开始DoS我了,峰值竟然有5500万。

至于我是怎么“惹毛”这群人的,以后也许可以写一篇来说说这件事,我觉得这其中的乐趣会比听相声还搞笑🤣,不笑我倒贴你100块。如果你还是想先了解一下,那么看这个Twitter就够了


本文的主题是,已经使用了Stripe,如何防患于未然,避免盗刷与测卡?假如在遭遇盗刷,需要立刻做什么事情?

Radar

Stripe Radar 是Stripe提供的一个反欺诈工具,基于强大的机器学习实现,并且可以自定义许多规则。比如ChatGPT不允许中国的卡付款,类似这样的规则,就可以Radar的规则实现。

Radar不收月费,而是从每笔交易里抽成,Stripe还是很良心而且很会赚钱的。

在遭遇盗刷的时候,立刻要做的事情就是开启 Radar,并且根据自己的情况调整灵敏度。同时,审核所有已经通过的付款,如果怀疑是盗刷的,要立刻全额退款,全额退款无法争议。在处理完之后,联系 Stripe客户表明自己的情况,要求他们提供协助和建议。

以新加坡为例,Radar风控团队版每笔交易 0.1新币,机器学习版每笔0.08新币。强烈建议开启团队版。

开启了Radar之后,我们可以在 Risk Control里调整Radar的灵敏度

Stripe 如何安全收款并避免盗刷与测卡

根据自己的情况调整即可,比如我在面临大量盗刷的时候,把灵敏度调到了50,意味着所有风险分数高于50的付款都会被拒绝。

3DS

在某些地方,你可能会看到 Stripe 2D 的说法。这里的2D指的是在线刷卡的时候只要输入卡号、有效期、CVV并且无需进行身份验证(通常是短信或者App推送)。对应的需要验证的则是3DS

在开启了 Radar之后,就可以强制开启3DS了,这样对于盗刷的情况基本可以拦截一大部分,毕竟他们没有卡主的手机。

Radar – Rules- Authenticate Rules,三个默认的3DS规则全部打开

Stripe 如何安全收款并避免盗刷与测卡

自定义阻止规则

每个人的业务都不同,比如我的这个业务下,美国人不太可能来用,更别提那些非常小众东南亚、加勒比海和非洲国家了。因此对于我来说,我只要允许中国、最多再包含港澳台的银行卡就可以了。

那么我们就可以添加一个这样的自定义阻止规则,表达式这么写,NOT要写最前面而不是写IN之前

NOT (:card_country: IN ('CN','HK','MO','TW'))

不想接受预付费卡,那么可以这样写

:card_funding: = 'prepaid'

只想接受中港澳台,允许任何国家的Apple Pay、Google Pay(这俩安全系数很高,不太可能是盗刷),那就这么写

Block if NOT (:card_country: IN ('CN','HK','MO','TW')) AND NOT(:digital_wallet: IN ('android_pay','apple_pay'))

3DS通过就接受,无所谓发卡国,可以这么写

NOT :is_3d_secure_authenticated:

某人在某黑产论坛:真不敢c cn的卡

在Stripe平台上,我们能做的事情差不多只有这么多了。为了防止测卡,我们还需要在自己的集成方式上下点功夫。

测卡的方式

测卡一般分两种,一种是授权,类似你在某些网站如Cloudflare绑定你的信用卡,并不会真正的扣款,App上一般能看到记录,但是每月账单上未必会有;另外一种则是付款,一般是小额付款,确认卡片有效准备来波大的。

Stripe 如何安全收款并避免盗刷与测卡

检测测卡

首先当然是要检测到测卡。显著增加的拒绝交易其实就可以用来识别测卡。

  • 尝试查看付款详情的时候,能看到Stripe会自动屏蔽测卡,如上面的这张截图
  • Developers的overview页面图表能发现很多失败

Stripe 如何安全收款并避免盗刷与测卡

  • 在 Developers – Logs 里查找402,也会发现大量记录

在发现被搞了之后,我们要赶紧采取措施。哪怕赶紧找到测卡的人的IP给屏蔽了也是办法。当然坏人没那么笨,简单的防火墙规则未必会管用的。

保护 API Key

Stripe的API Key分为两种,一种是Publishable Key可以公开的;另一种是Secret Key,有这个Key就可以访问Stripe的系统和全球金融网络,所以万万不能泄漏

遇到测卡建议无论是否泄漏 secret key,都去吊销生成一个新的,并且添加IP访问白名单

Stripe 如何安全收款并避免盗刷与测卡

优化集成方式

使用 Stripe有很多集成方式,使用 Stripe Payment Link、Stripe Checkout、Stripe Elements是推荐的方式

Stripe 如何安全收款并避免盗刷与测卡

用这种集成方式, Radar能够自动捕获到更多的信息,更容易判断盗刷测卡。

其他的方式可能就需要自己手动提供信息了。

添加captcha

在请求创建 PaymentIntent之前可以加上一个验证码,比如 Cloudflare的turnstile就是非常好的选择。 这样对于大部分的垃圾请求都可以过滤了。

需要注意,turnstile是需要客户端+服务端实现的。只有客户端是不完整的。

频率限制

一般来说,单个IP创建 PaymentIntent 不应该太频繁,可以加上频率限制降低被刷概率。

登录会话

登录了才能购买,类似这种可以降低被刷成本

自定义规则

根据自己的业务情况,使用不同的规则来屏蔽测卡。甚至还可以根据IP地理位置和发卡国组合,就看想象力了

战果

这是屏蔽的付款,看这个时间这么接近,人在美国用着泰国、甚至一些奇怪的小国家的卡,风险系数非常高

Stripe 如何安全收款并避免盗刷与测卡

大概拦截了3000欧,恐怖啊😂 最开始规则配置的不太正确,估计误杀了一部分

Stripe 如何安全收款并避免盗刷与测卡

总结

  1. Stripe的文档还是挺不错的,SDK用起来也非常舒服。无论是stripe.js还是python bindings,写满了 type annotations,想用错都难
  2. Stripe的客服也很专业,响应非常迅速
  3. 坏人太多啦

文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://dmesg.app/stripe-fraud.html
喜欢 (10)
分享:-)
关于作者:
If you have any further questions, feel free to contact me in English or Chinese.
发表我的评论
取消评论

                     

去你妹的实名制!

  • 昵称 (必填)
  • 邮箱 (必填,不要邮件提醒可以随便写)
  • 网址 (选填)
(3)个小伙伴在吐槽
  1. 上面推特链接不是另外一个博主发的吗 是不是放错了?
    Jacky2024-08-04 06:50 回复
  2. https://cdn.linux.do/uploads/default/original/3X/2/3/23736dffab5db9b84011c20b2a16462f2fe6ba7f.png 看图
    Undefined2024-08-03 17:26 回复
  3. 坏人太多了,这个世界如此啊
    Rainman2024-08-03 16:42 回复