风控安全产品系统设计的一些思考

news2024/10/7 18:25:06

背景

本篇文章会从系统架构设计的角度,分享在对业务安全风控相关基础安全产品进行系统设计时遇到的问题难点及其解决方案

内容包括三部分:(1)风控业务架构;(2)基础安全产品的职责;(3)基础安全产品相关系统架构的设计要点。

文章会以总-分的形式进行阐述。懂的不多,做的太少。欢迎批评、指正。

风控业务架构

我把风控业务架构的分层分为6层,分别是组件层、业务层、决策层、能力层、计算层、可视层。

以下基建基础安全产品的简称。

image-20230416170722704

组件层

组件层的职责是:数据收集与行为反制

从接口、设备、行为三个维度进行数据收集,接收决策层的指令进行行为反制。为了保证数据的收集数据的可靠性,就衍生出了壳、混淆、反调试等加固策略。

image-20211106214029593

更详细的思考在我的《风控安全产品的探索之路》这篇文章中,感兴趣可跳转阅读,这里就不再赘述。https://www.cnblogs.com/boycelee/p/15948323.html

业务层

业务层的职责是:风控数据透传与风控决策结果处理

将风控所需要的数据透传至决策层,业务层获取到决策层数据后,根据决策层结果选择执行风险反制或业务逻辑。

透传数据一般包括:风控数据和业务补充数据。

决策层

决策层的职责是:风控能力应用

决策层是整个风控业务的核心,将风控能力高效连接起来,有效、合理地应用能力层、计算层所具备的能力。这一层的难点在于工程而非安全领域,例如:如何设计调用链路(降低计算时长)、如何处理超高并发流量、如何保护下游风控内部系统等。

其中包括:风控参数预处理、风控能力应用(组件/名单/模型等)、风险决策(规则引擎)、反制决策(观测/登录/验证码/行为验证/封禁)。

能力层

能力层的职责是:识别基础安全风险

该层包括:设备指纹、环境检测、接口防护、验证码、IP风险、手机号风险、链路风险等。

能力层是风控系统的基石,它的能力决定了一个风控系统识别风险能力的下限。会从资源、接口、设备、链路、行为等维度进行系统性风险扫描。

计算层

能力层的职责是:补充风险识别能力

该层包括:数据引擎、规则引擎、风险名单、识别模型、风险预警。

计算层是对基础安全风险识别能力的补充,它的能力决定了一个风控系统识别风险能力的上限。从频率统计、策略规则、风险名单、模型识别、风险预警等维度对能力层进行能力补充。

可视层

可视层的职责是:提升运维效率

该层包括:运维报表、引擎配置、流量监控、事件追踪。

可视层能够在事前能够分析风险潜在风险,事中有效执行并降低配置错误概率,事后观察风控效果。满足运营策略调整与风险管理的需求。

因为目前主要深入了解与实践的是组件层和能力层的建设,所以文章后续会从基建(基础安全产品)的视角进行系统性总结。

基础安全组件

落地难点

  1. 接入场景多

    拉新激活、账号、反爬(多业务线)、交易(多业务线)、营销(多业务线)。

  2. 接入终端多

    ADR(多技术栈)、IOS(多技术栈)、WX(原生、非原生)、WEB、TOUCH。

  3. 接入组件多

​ 防护组件(指纹、环境检测、接口防护等)、验证码组件、登录组件等。

待解决问题

image-20230417011910718

架构特性

在进行架构设计时,我会重点关注架构的这三大特性,分别是:安全性、易用性、稳定性

image-20230416015431292

安全性

因为是安全组件,其识别能力和组件自身安全性是首先要保证的。

稳定性

组件会应用在各个场景,所以要尽可能降低由安全组件造成故障的概率。

易用性

尽可能降低业务接入的成本。

具体案例

以接口防护组件设计来举例。

问题分析

攻击场景

(以ip138查询网举例,不代表本人对该网站进行过攻击)

image-20230417001904078

攻击还原

思路描述

请求离开容器后,通过抓包的方式,获取并解析数据,然后进行数据篡改、伪造鉴权,最后重新构造数据并发送请求。

image-20230417010727406

攻击步骤

(1)抓包;(2)解析数据;(3)数据篡改;(4)伪造鉴权;(5)构造数据;(6)发送请求。

攻击步骤防御可行性分析

image-20230416205548600

防止抓包

(1)抓包在应用外进行;

(2)除App,其他端防抓包基本不可防;

(3)防御性价比不高。

防止解析

解决方案是加密。

(1)入侵性较强、强依赖;

(2)加解密服务稳定性要求高;

(3)业务响应时长上升。

系统设计

系统架构

描述系统分层、职责、关系以及运行规则。

image-20230417002708863

组件层

提供接口防护组件、验证组码件和登录组件。

透传层

通过数据共享或业务系统透传方式透传风控参数。

决策层

进行入参校验、版控、能力使用以及反制决策等。

能力层

提供接口检测能力等。

架构特性

安全性

关于安全性另一篇文章《业务安全相关安全产品的反思》中已经详细阐述,这篇文章就不过多赘述。https://www.cnblogs.com/boycelee/p/16223114.html

安全性的难点除了风险识别上的难点,还有就是面对多个终端(Android、iOS、小程序、PC、Touch),其底层逻辑完全不一样。我们如何总结出统一的设计思想(方法论)这样的类工程问题。

如防容器脱离,我总结的思想就是:上层与业务逻辑建立联系,中层多个组件间建立联系,下层与操作系统(WX容器、浏览器)建立联系。

image-20230417000511003

稳定性

image-20230416210605354

易用性

(1)组件化

关于前端组件的易用性,不能与业务过于耦合,需要根据业务特性进行适当地解耦。如果与业务系统过于耦合,首先是在对防护逻辑进行升级时势必会影响业务,就需要投入测试人力进行业务逻辑回归,其次是防护能力往其他场景迁移也会有代码重复冗余的问题。

image-20230416230517608

(2)易用性提升

如何在组件化的前提下进行易用性提升?我坚持的原则是尽量在不入侵业务的前提下,降低接入成本

我的解决方案是,结合项目前端技术栈特点进行如下选择:

image-20230416210621663

a)方式一:是否有统一的网络框架?

​ 如使用安卓原生技术开发苹果原生技术开发一般企业都有统一的网络框架进行网络出口管理,这时组件就可以从中找一个切面进行组件接入

b)方式二:是否有统一组件?

​ 如小程序(或Android Hybird等)没有封装统一的网络库,而是页面直接使用HTTP协议发送请求,但有统一的工具库,此时可以帮业务提前做好组件引入工 作,业务使用时 直接本地调用即可。这也可以一定程度地提升易用性。

c)方式三:是否可以引入三方组件?

​ 如网页端(WWW、TOUCH)提供好完整的风控.js文件,业务方使用时直接调用即可,虽然不如以上a、b两种方式更友好,但要强于代码拷贝的方案。

image-20230417000706468

最后

软件工程没有银弹,逆向工程永远胜利。

懂的不多,做的太少。欢迎批评、指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/846325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python_day19_正则表达式

正则表达式re模块 导包 import res "python java c c python2 python python3"match 从头匹配 res re.match("python", s) res_2 re.match("python2", s) print("res:", res) print(res.span()) print(res.group()) print("…

致远OA协同管理软件无需登录getshell

一个男子汉,老守在咱村那个土圪崂里,又有什么意思?人就得闯世事!安安稳稳活一辈子,还不如痛痛快快甩打几下就死了!即使受点磨难,只要能多经一些世事,死了也不后悔! 漏洞…

数据结构日记之《队列的定义》

队列的定义 一、队列的定义和特点二、队列的抽象数据类型定义三、例子 一、队列的定义和特点 队列 (queue) 是一种 先进先出(First In First Out, FIFO) 的线性表。它只允许在表的一端进行插入,而在另一端删除元素。这和日常生活中的排队是一致的,最早进…

SpringBoot3进阶用法

标签:切面.调度.邮件.监控; 一、简介 在上篇《SpringBoot3基础》中已经完成入门案例的开发和测试,在这篇内容中再来看看进阶功能的用法; 主要涉及如下几个功能点: 调度任务:在应用中提供一定的轻量级的调…

AcWing 93:递归实现组合型枚举 ← DFS

【题目来源】https://www.acwing.com/problem/content/95/【题目描述】 从 1∼n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。【输入格式】 两个整数 n,m,在同一行用空格隔开。【输出格式】 按照从小到大的顺序输出所有方案&#xf…

uniapp根据高度表格合并

没有发现比较友好的能够合并表格单元格插件就自己简单写了一个,暂时格式比较固定 一、效果如下 二、UI视图+逻辑代码 <template><view><uni-card :is-shadow="false" is-full

怎么把CAD高版本转低版本?CAD版本转换方法分享

CAD文件版本转换通常是为了确保更高版本的CAD软件能够打开旧版本的文件。此外&#xff0c;不同版本的CAD软件可能具有不同的功能&#xff0c;因此转换文件版本可以确保可以在任何版本的软件中使用文件。此外&#xff0c;如果我们需要与其他人共享文件&#xff0c;则需要将文件转…

基于EEGLAB的ICA分析

目录 1.ICA原理 2.ICA的实现 3.ICA成分识别 4.ICLabel识别并去除伪迹 5.ICA成分识别练习 1.ICA原理 得到的每一个地形图&#xff0c;实际上就是它的权重谱。 投射&#xff1a;根据原成分恢复原始信号。 选择性投射&#xff1a;去伪。 2.ICA的实现 extended&#xff0c;1&…

bigemap如何添加在线地图源?

第一步 打开浏览器&#xff0c;找到你要访问的地图的URL地址&#xff0c;并且确认可以正常在浏览器中访问&#xff1b;浏览器中不能访问&#xff0c;同样也不能在软件中访问。 以下为常用地图源地址&#xff1a; 天地图&#xff1a; http://map.tianditu.gov.cn 包含&a…

小程序的api使用 以及一些weui组件实列获取头像 扫码等

今日目标 响应式单位rpx小程序的生命周期 【重点】20%小程序框架 weui 【重点】 50%内置API 【重点】30%综合练习 1. 响应式rpx 1.1 rpx单位 rpx是微信小程序提出的一个尺寸单位&#xff0c;将整个手机屏幕宽度分为750份&#xff0c;1rpx 就是 1/750&#xff0c;避免不同手…

知网期刊《中阿科技论坛》简介及投稿须知

知网期刊《中阿科技论坛》简介及投稿须知 主管单位&#xff1a;宁夏回族自治区科学技术厅 主办单位&#xff1a;宁夏回族自治区对外科技交流中心(中国一阿拉伯国家技术转移中心) 刊  期&#xff1a;月刊 国际刊号&#xff1a;ISSN 2096-7268 国内刊号&#xff1a;CN 64-…

一场大规模山体滑坡摧毁了世界最高峰之一

安纳普尔纳四号峰在喜马拉雅山山体滑坡中倒塌&#xff0c;科学家们终于弄清楚了它发生的时间和方式。 现今尼泊尔安纳普尔纳四号峰的景色&#xff0c;展示了中世纪时期倒塌的面貌。图片来源&#xff1a;Jrme Lav 山为什么不会永远生长&#xff1f;碰撞的构造板块不断地将山脉推…

下载网络文件到本地

文章目录 目录 前言 操作步骤 1.引入 2.读取出文件内容 3.筛选出URL 4.下载表情包 总结 前言 这里记录一次用代码下载网络文件的过程&#xff0c;以获取抖音表情包为例。 一、操作步骤 1.引入 首先抖音有网页版&#xff0c;用浏览器就可以观看&#xff0c;用户评论发布表情在…

《Vue.js实战》——基础篇(1)

目录 资源&#xff1a;&#x1f31f; 一、初识Vue.js&#x1f44b; Vue.js是什么&#xff1f;&#x1f647; MVVM模式 ✍ Vue.js有什么不同 ☔ 如何使用Vue.js? ☁ 传统的前端开发模式 ☀ Vue.js的开发模式 &#x1f5fb; 二、数据绑定和第一个Vue应用 &#x1f5f…

嵌入式开发学习(STC51-16-ADC模数转换)

内容 通过ADC转换电路采集电位器AD值&#xff0c;将采集的AD值转换成电压值&#xff0c;通过数码管显示出来&#xff1b; 采集光敏电阻的AD值&#xff1b; 采集热敏电阻的AD值&#xff1b; 采集外部通道AIN3的电压值&#xff1b; 为了方便显示&#xff0c;我们可以通过独立…

NeRF室内重建对比:Nerfstudio vs. Luma AI vs. Instant-NGP

十年前&#xff0c;Matterport 改变了房地产业&#xff0c;让房地产买家可以进行数字旅游。 买家可以在房产内从一个点移动到另一个点并环顾四周。 与 2D 照片库相比&#xff0c;这是一个巨大的改进。 然而&#xff0c;买家仍然被房产内的一系列问题所困扰。 推荐&#xff1a;用…

程序员必读 | 《业务架构解构与实践》

之前看书大多"不求甚解", 意会即可&#xff0c;但是找一本新书看是可遇而不可求的。回过头来&#xff0c;摘抄研究一下已经看过的&#xff0c;也是别有一番风味的。本文就是对之前一本书的摘录。 文章中各种暗淡不一的图片&#xff0c;其实是在各种环境下&#xff0c…

Java中Date方法详解

先进行专栏介绍 本专栏是自己学Java的旅途&#xff0c;纯手敲的代码&#xff0c;自己跟着黑马课程学习的&#xff0c;并加入一些自己的理解&#xff0c;对代码和笔记 进行适当修改。希望能对大家能有所帮助&#xff0c;同时也是请大家对我进行监督&#xff0c;对我写的代码进行…

耗时6个月,我做了一款干净、免费、开源的AI数据库

一、Chat2DB简介 在消失的这段时间&#xff0c;我做了一款集成了AI的数据库管理工具Chat2DB。 他是数据库也集成了AIGC的能力&#xff0c;能够将自然语言转换为SQL&#xff0c;也可以将SQL转换为自然语言&#xff0c;还可以给出SQL的优化建议&#xff0c;可以极大提升效率。 …

使用RecyclerView构建灵活的列表界面

使用RecyclerView构建灵活的列表界面 1. 引言 在现代移动应用中&#xff0c;列表界面是最常见的用户界面之一&#xff0c;它能够展示大量的数据&#xff0c;让用户可以浏览和操作。无论是社交媒体的动态流、商品展示、新闻列表还是任务清单&#xff0c;列表界面都扮演着不可或…