上一篇文章你小子可真刑,居然想篡改微信余额?发出去后,收到了许多给小帅的建议
评论区都很刑,也很可拷,说话又好听,看你们跃跃欲逝的样子,真的很有判头。
于是我觉得就还是很有必要解答一下大家的疑问和建议。
这是网友私信的建议,签名当然是有点用的,但又不完全有用。
例如可以给(账户ID+账户所有者+账户余额)加一个联合签名,只要数据被篡改,下一次读取验签的时候就能发现。但这一招只能防君子不能防小人,既然都决定要篡改数据了,重新计算一下签名,把签名一起改掉也不难吧?君子不会去改数据,小人弄到一个签名算法也不是难事,因此这一招意义不大。
有朋友敏锐地观察到,对账手段都是事后的,也就是说在篡改余额和被发现之间有一个时间差,利用时间差跑路是不是就安全了?
太天真了兄dei,改完余额要想获利是不是得提现?那么在提现的时候就会遇上风控拦截。
风控是基于大数据对用户画像进行分析,特别是对巨额提现行为,如果不符合该用户日常的操作,会对这一请求进行拒绝。
那既然提现走不通,直接把钱花掉可以吗?比如花4500万买一根香蕉?同样行不通,支付的时候一样有风控,类似请求可能会被反洗钱策略拒绝。
不通过改数据,而是找到提现链路中的关键环节,绕过余额校验,能提现成功吗?
首先,改代码的难度要比改数据还要高,改代码需要经过代码审核(Code Review),还需经过自动化测试,还未把代码发布到线上就已经被发现了。
其次,前面说了提现需要过风控的,在这里同样会拦截。
最后,即便悄摸摸地把代码发布了,把余额检查和风控都绕过去,在系统上依然有防控措施。
这里除了有风控拦截,还有渠道打款的余额二次校验和其他校验,所以绕过余额检查是不可能提现成功的。
有人在评论区提到从沉睡账户中薅钱,100w个沉睡账户,每个1元也是一笔不小的收入是吧?
这当然不行!要完成转账也需要核身,就是证明你是你才可以完成转账,前台的功能走不通,只能后台改数据了。
但你觉得改数据也容易吗?
好不容易把几百万条SQL准备好了,准备开始执行,由于数据量过大需要分批执行,假设每秒钟修改1000条记录,修改300w条就需要大约50分钟。在执行期间
经过两轮的讨论,大家应该会发现资金风险防控从来不是点状的,而是形成一个网状结构,仅仅从单点突破,几乎都很难从这个网撕开一个口子。这也是我们资金人的职责所在:保护用户放在我们这的每一笔资金。
如果对支付系统建设、对资金安全建设感兴趣,可以关注我。后续会针对资金风险防控进行系统性的完整介绍。