发这篇文章,是为了寻找三位幸运的朋友
三位朋友的邮箱和微信昵称我都打码了,如果你们看到消息了,请联系哥飞微信,拉你进社群配套微信群。放心,不会找你要补差额的。
这里也很感谢这三位朋友,没有传播扩散消息,让我们的损失可以最小化。
当时确认是 Bug 后,同事问我,要不要给三位朋友退款并且取消权限,我思考了 0.1 秒,就决定,不退款,不隐藏,反而要写篇文章来跟大家聊聊怎么避免这类支付漏洞。
其实这次 Bug 的原因很简单,参数配置错误导致的,配完之后没有测试确认,于是就导致 Bug 一直存在了 9 个小时。
最近社群配套网站新增了在线收款能力,最开始的付款金额是写到环境变量里的,后来元旦的优惠活动需要修改金额,就要去修改环境变量,发现比较麻烦,于是就改成了后台可配置。
问题就出在这里了,两位同事没有沟通清楚,本来应该填分的,填成了元,于是所需要支付的金额就变成了百分之一。
我们社群的价格是公开透明的,2024 年 8 月 1 日的文章《哥飞社群多少钱?续费多少钱?》里已经写清楚了,价格就是 2600 元,到现在这个价格我们已经执行 16 个月了。
上午同事修改好代码,打包部署上去之后,在后台填了 2600 的数字,没有进行测试,就没管了。
于是在 12:04 ,第一位幸运的朋友尝试付款开通权限时,发现只需要付 26 元即可,他就愉快地付钱了。
这时,其实我的企业微信通知里是收到了消息的,但我不了解价格配置从环境变量移动到了后台这件事,所以就以为是正常的测试信息,现在想来,还是敏感度不够啊。
其实我之前在即刻写过几次关于不要忽略微小的异常信号话题,但是到我自己身上,还是不够敏锐,当时正在去吃午饭的路上,自己脑补了一下,想到了一个可能合理的解释,就没深究了。
第二笔错误金额的订单发生在下午 17:18,我那时候在开会,没有及时注意到企业微信消息通知。
直到第三笔错误金额订单在20:49分出现,同时我也看到了上一笔订单,就立马引起我的警觉了,不可能那么巧的事情会接二连三发生,一定是哪里出错了。
发给相关同事一看,一核对,才发现是配置信息填错了,本来应该填260000的,填成了2600。
所以,大家看,就是这么简单的错误,其实是有很多种方法来避免的。
如后台配置时,显示出来的数字自动除以 100,按照元显示,输入时也按照元输入,存储时按照分存储,就不会出错了。
又或者在配置项旁边提示清楚,这里需要填写分,不要填成了元,也是可以的。
然后修改完配置项之后,一定要去测试,改没改成功,如果测试了,也能够发现问题。
然后在发现第一笔异常金额订单时,能够及时联想到上午的修改,也是可以及时修补好漏洞了。
但以上,通通都没有发生,于是就一错再错,直到第三笔订单被我发现,才修补好了漏洞。
其实接入支付,还有一个地方也容易出漏洞,当年生财有术的首枚龙珠,就发给了帮助知识星球发现并且上报这个漏洞的人。
说起来也简单,就是接收支付平台的支付回调通知时,不仅要检验通知本身是否被篡改,是否是支付平台发送过来的消息,还需要拿着支付回调通知里给的用户真实付款金额跟我们订单表里记录的用户要支付的金额是否一致。
如果这里没有去校验,就直接修改了订单状态为支付成功状态,就把相关权益发放出去了,就有漏洞了。
拿微信支付举例,本来要付 100 元的,用户可以在前端发起支付请求时,把付款金额修改成 1 分钱,之后后端向微信支付服务器发起下单请求传过去的也是 1 分钱,再返回预付款信息给前端,前端调起微信支付,于是用户付款也是 1 分钱,之后支付回调通知里也是 1 分钱。
我们时不时听到某某产品,有支付漏洞,可以一分钱购买任意价格商品,就是这里没有处理好。
这里不仅要在支付回调通知时校验金额,更好的方式是,向微信支付服务器发起下单请求时,就不要用前端传过来的金额,而是直接根据商品信息,从数据库获取需要支付的金额。
也就是有经验的后端开发时常说的,永远不要相信前端输入的任何信息,一定要在后端做好校验。
可能有人好奇,哥飞你为啥这些都懂?
那是因为你不知道,哥飞也是干了12年的老程序员了。
从最开始学习 ASP 做网站起步,后来学习 PHP,学习 JAVA,再后来学习前端开发,CSS 哥飞手写得老溜了,再后来带团队,做技术负责人,也还是会写一些代码。
我们有时候会称呼某些程序员为全栈工程师、全干工程师、全流程工程师。
第三个名字是哥飞的朋友白宦成发明的,全栈工程师,通常定义是会前后端开发,全干工程师会多一些技能,而全流程工程师则除了技术之外,一个产品的全流程生命周期都需要懂。
这也是哥飞社群里正在给大家培养的技能,从需求挖掘到需求理解再到做个产品来满足需求,再到做好优化,做好宣传推广搞到流量,再到通过 Adsense或者用户订阅进行流量变现,真正靠产品赚到钱,都是全流程工程师需要学会的。
正在读文章的你,想要成为能够通过自己开发的产品赚到钱的全流程工程师吗?
那么先把哥飞公众号里最近两年多写的五百多篇文章看完,就会是你成为全流程工程师的第一步。
再把哥飞出海视频号里的所有的视频看完,你就能够更进一步。
当然还有更多视频,尤其是一些直播回放,更是值得观看学习,但是一篇文章最多插入 10 个视频,所以就请大家关注哥飞出海视频号,在那里观看。
2025 年的最后一天,哥飞的朋友们写了各自的年终总结,我都发在了《一边上班一边上站还能月入万刀?哥飞朋友们的2025年终总结大全》,大家也可以看看这些朋友们是如何通过在哥飞社群学习,实现自己做产品赚到钱的。
如果你也对哥飞的朋友们社群感兴趣,可以加哥飞微信咨询了解。
微信搜索框,输入 361079 ,点击查找QQ号,就能加哥飞微信了。
点击阅读原文,可以打开社群配套网站。
没有评论:
发表评论