浅谈电商系统的风控设计

风控,即风险控制,存在于各行各业中。作为一个风控方面的门外汉,风控在我心里的位置却是极其重要的,对于电商系统,我会把风控放在命门的位置上,也就是没有一定的风控能力,整个系统将岌岌可危,我甚至觉得没有上线的必要,反正迟早都要被搞垮。

我这么觉得是因为知道有大量黑灰产、羊毛党的存在,这些人已不是单打独斗的形式,早就与时俱进地团队作战了。如果系统不针对这些人的行为进行防范,随时有可能因为被恶意使用而导致系统瘫痪,从而无法给真正的用户提供服务。因此,在电商系统里面,风控最好是一个独立的子系统,其它子系统在进行业务交互时,先调用风控系统的接口判断是否应该放行当前调用。

业务系统的开发人员很少会去想风控的事情,他们聚焦于提供功能服务。风控系统应该由专门的风控人员进行设计,由开发人员实现,以API的形式给其它子系统提供服务,然后业务系统开发人员在相应的地方,调用风控系统接口。然而说起来容易,实际上要做一个风控系统可真不简单,尤其是创业初期的小团队,要人没人,要钱没钱,宝宝心里苦啊。这种情况下,作为技术人员,我们也只能尽量去想象那些黑灰产人员大概都会有怎样的行为,然后针对这些行为进行处理,虽然不会有专门的风控人员那么专业,但我相信风控的朴素逻辑应该也是这样的。

针对任何系统的风险行为,总是有一个入口,而对于电商的业务系统来说,这些入口就是前端界面可输入的地方,本质上是后端那些非get类型的接口。

举例来说,消费者使用的前端是APP形式,商家使用的前端是PC Web形式的商家管理系统,那么这两个前端界面可输入的地方,都会存在安全隐患。这些可输入的内容,比如文字、图片、视频等存在的风险,属于内容风险。我们需要对文字进行敏感词过滤,对图片进行签黄以及对图片上的文字进行审核,对视频的内容也需要进行审核。

光有内容审核还不够,还需要对用户的行为进行风险识别。比如注册登录时,对于恶意地大批量注册行为、登录时对密码进行暴力破解等行为的识别。这些属于行为反欺诈的一部分,首先阻止非正常用户进入系统,也就限制了这些用户进一步操作的能力,将风险行为扼杀在最前端以防蔓延到后端更多的子系统。

假设用户正常通过上面的关卡进入系统了,接下来还需要进行很多的策略设计。比如对接口的权限检查,看看该用户是否具有调用某些接口的权限。有些人会觉得,如果用户没有调用该接口的权限,那APP上就不会给他操作的机会好了。这就是思维不够全面的一个例子,接口权限是由后端控制的,用户并不一定都通过APP来使用接口,只要你接口暴露出去了,攻击者就可以在自己的代码中调用接口,这时候就没有诸如按钮变灰不让用户操作这种事情的存在。假设权限检查通过了,部分接口还是需要进行某些其它限制,比如时间间隔。假设某个用户通过自动化脚本恶意下单不付款,可能会造成很多商家库存一下子都变为为零(具体要看扣库存的行为是在哪一步,下单后还是付款后)的假象,这样会损害商家的利益,同时系统中充斥了大量恶意的无用的订单。

即使针对上面提到的风险都进行了防范设计,但很可能做得不够好,怎么办呢?那就尽量隐藏后端接口相关信息吧,如果不知道后端接口地址,也就不知道怎么进行调用。我们可以对APP进行加固,防止反编译,避免通过反编译看到接口的地址及调用方式。目前腾讯的应用宝在进行APP上架审核时,都需要用户先对APP进行加固,并且提供了加固工具,挺方便的。其他应用市场可能不需要加固,但我们可以使用应用宝提供的加固工具加固后,再上传到其它应用市场。

以上就是我作为一个技术人员,暂时能想到的风险相关的内容,而即便就这么多内容,对于小公司来说,也是花大量的投入才能做好。目前一些第三方平台有相应的服务供使用,比如阿里云的内容安全和风险识别API,是阿里自身平台沉淀下来并对外输出的服务,其它云平台估计也有类似服务。对于小企业来说,初期没有办法进行大量投入的,可考虑使用第三方服务。

前面说过,对于风控,我不是专业的,只是门外汉,这里整理了一些自己能想到的内容,如果有专业的风控人员路过,或许要被笑话了。不过没关系,如果今后在这方面有新的想法和更多的实践,我还会在这里继续分享,其实就算被笑话,也并不羞耻,重要的是,自己有没有一直在成长!

微信扫码,进入【技术人成长】社群逛逛。