团尚科技现金贷系统:从技术角度看现金贷网络防御
作者:tuanshang发表时间:2018-01-04 08:49来源:未知
目前在做现在互金行业最火的领域——现金贷产品,所以针对项目做一个总结系列,本文涉及到技术方面的知识,如有不当之处,欢迎指出。
一、短信接口的攻防
以前在做支付公司对黑产做过调研,知道国内的黑产异常猖獗。针对现金贷产品,由于我们倡导“线上填写真实资料,极速审核放款”,所以在用户推广注册时,对短信验证码需要做一些限制,放置机器恶意注册。
推广注册会分为两端,移动APP和H5
移动APP由于需要下载安装包并打开,注册前的下载安装成本较大,所以客户端在注册页面没有做很多限制
H5由于是域名形式,访问容易,前端在注册页面做限制,即需输入随机图形验证码后才能获取验证码
两者在验证码下发时,都会有获取时间限制(通常为60s,60s后才能再次获取验证码)
相对于前端,后端这边可以做限制更多了,由于机器恶意注册的特点是短快高(短时间、操作快速、高频率),限制思路基本上都是在特有维度基础上结合时间维度进行(这也是目前风控策略的基本思路之一)。
手机号维度:针对手机号,目前部分手机号号码段已经沦为黑产的常用号码段,比如虚拟运营商的170/171号码段,因此在短时间内来自上述号码段的验证码请求过多,也是需要做监控甚至是拦截
IP维度:针对单个IP地址/IP段,后台监测到在一定时间内(1h/3h/6h)的验证码请求次数过多,将暂停响应相关来源的请求。
如果能拿到GPS和硬件设备码,同样还可以根据上述机制做监控和屏蔽。
这一环节的监控机制,一来可以防止黑产注册、二来还可以防止推广渠道本身为赚推广费而大规模刷单
服务器并发连接达到上限
项目推广的高峰期,由于涌进来的用户数量过多,在做身份认证和活体检测时,用户客户端和后台长时间保持连接状态,以上传身份照片和活体检测视频到某face厂商做对比。由于身份认证和活体检测是产品认证的第一步,涌进来的用户一般先进行此项认证,再加上照片和视频文件较大,严重占用服务器带宽,TCP连接数一直长期徘徊在峰值(初期设计峰值在1000),同时服务器CPU的利用率也接近100%,服务器几近宕机,重启后也没有很好的效果。当晚,产品和技术分析讨论,有:
为什么会出现此类问题
上线前的压力和性能测试过于简单,没有人能准确知道服务器性能峰值
此认证环节数据流转冗长复杂,由客户端上传数据到后台数据库,后天提供数据URL给厂商下载数据来做校验对比、厂商对比出结果后再给后台,后台记录后通过接口返回给客户端,客户端显示结果给用户
身份照片和活体视频上传前的压缩算法压缩效果较差,压缩后的图片和视频对传输速率和存储空间随着用户增长而倍增
用户成功进行身份认证后,照片和视频会按压缩后的大小回填到操作界面,再次加重后台的压力
如何解决问题
在咨询身份认证厂商后,对方提议改由前端直接调接口传数据给他们,然后比对成功后,将结果返回给前端,同时将结果给后台,后台再存储用户的身份证照片和活体视频
寻找图片和视频效果更佳的压缩算法
用户成功身份认证后,不回填照片和视频,前端根据结果展示结果缩略图
后续响应机制
涉及到大功能上线,上线前必须做压力和性能测试,了解服务器性能峰值
产品需要和技术同步上线后的推广计划,每天会带来多少新用户,同时老用户的留存是多少,让技术对用户数量有大致了解,从而在负载均衡,存储扩容和带宽加速等方面做好准备
服务器恶意攻击
按毕业时间来算,自己从业时间不长,没有真实地经历碰过网络恶意攻击,在做现金贷的时候,竟然遇上了。从下图TCP并发连接数波形图来看,波峰和波谷呈规律性波动,技术从后台排查到有一个IP地址在一天内频繁地尝试调用我们的接口,而且请求量极大,耗费我们的服务器资源,调用上以POST方式在半天内调用上千次,同时IP查询出来为共享地址,无法定位到省市。
如何解决问题
统一梳理第三方厂商的接口IP,在防火墙上设置IP白名单
跟之前短信接口类似,针对单个IP在极短时间内调用频繁做拦截
接口监控和防御策略
现金贷产品通常需要连接众多第三方供应商接口,目前市面的认证信息分类有:
基本身份信息:姓名、身份证、活体检测(人脸识别)、长住址
社交信息:常用联系人、紧急联系人、QQ、微信
银行卡信息:银行卡号、持卡人、预留手机号、开户行
手机运营商信息:手机归属地、通话记录、通话地理位置轨迹、常用联系电话、通话次数、通话时长、电话消费金融,
学历信息:最高学历、毕业学校、在校时间
芝麻信用:芝麻分
消费数据:淘宝、天猫、京东等账号绑定
央行征信数据
针对上述信息,需要梳理供应商接口的错误返回码,并将非用户客观信息造成的错误返回记录下来,
同时,对于产品经理来说,从自己的岗位角度出发,也可以这样做:
产品设计时,需要充分了解第三方接口厂商的接口文档和流程
产品上线后提供相关运营推广计划给开发