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

背景

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

内容包括三部分:(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.rhkb.cn/news/81429.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络安全】网络安全威胁实时地图 - 2023

文章目录 [TOC] ① 360 安全大脑360 APT全景雷达 ② 瑞星杀毒瑞星云安全瑞星网络威胁态势感知平台 ③ 比特梵德 Bitdefender④ 飞塔防火墙 FortiGuard⑤ 音墙网络 Sonicwall⑥ 捷邦 Check Point⑦ AO卡巴斯基实验室全球模拟隧道模拟 ⑧ 数字攻击地图⑨ Threatbutt互联网黑客攻击…

springboot集成分布式任务调度系统xxl-job(调度器和执行器)

一、部署xxl-job服务端 下载xxl-job源码 下载地址: https://gitee.com/xuxueli0323/xxl-job 二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库 三、启动项目、访问首页 访问地址: http://localhost:8080/xxl-job-admin/ 账号&#xff1…

Android AccessibilityService研究

AccessibilityService流程分析 AccessibilityService开启方式AccessibilityService 开启原理 AccessibilityService开启方式 . 在Framework里直接添加对应用app 服务component。 loadSetting(stmt, Settings.Secure.ACCESSIBILITY_ENABLED,1); loadSetting(stmt, Settings.Se…

vue去掉所有输入框两边空格,封装指令去空格,支持Vue2和Vue3,ElementUI Input去空格

需求背景 就是页面很多表单输入框,期望在提交的时候,都要把用户两边的空格去掉 ❌使用 vue 的指令 .trim 去掉空格 中间会输入不了空格, 比如我想输入 你好啊 中国, 这中间的空格输入不了,只能变成 你好啊中国 ❌在提交的时候使用…

Spring Boot日志文件

文章目录 🧊1.日志有什么作用🧊2.认识日志🧊3.自定义打印日志🥝3.1得到日志对象🥝3.2利用日志对象的方法打印日志🥝3.3日志格式说明 🧊4.日志级别🥝4.1 认识日志级别🥝4.…

super父类 事物

一个没有事物的方法。 调用他的父类里有事物的方法。 无论this 和 super 都会让父类事物方法没有事物。 如果写了super.class 文件里面,就是super调用。 如果没写,就是this调用,坑爹 测试,把父类注入,事物才生效。

Javaweb学习(2)

Javaweb学习 一、Maven1.1 Maven概述1.2 Maven简介1.3、Maven基本使用1.4、IDEA配置Maven1.6、依赖管理&依赖范围 二、MyBatis2.1 MyBatis简介2.2 Mybatis快速入门2.3、解决SQL映射文件的警告提示2.4、Mapper代理开发 三、MyBaits核心配置文件四、 配置文件的增删改查4.1 M…

python爬虫2:requests库-原理

python爬虫2:requests库-原理 前言 ​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 目录结构 文章目录 python爬虫2:requests库-原理1. 概述2. re…

解决Error running XXXApplicationCommand line is too long.报错

测试IDEA版本:2019.2.4 ,2020.1.3 文章目录 一. 问题场景二. 报错原因2.1 为什么命令行过长会导致这种问题? 三. 解决方案3.1 方案一3.2 方案二 一. 问题场景 当我们从GitHub或公司自己搭建的git仓库上拉取项目代码时,会出现以下错误 报错代…

以技术驱动反欺诈,Riskified 为企业出海保驾护航

如今,全球对于线上消费的需求日益增长,各类新型支付方式也层出不穷。在国内,线上支付有着较为完善的法律及监管条例,格局基本已定型。但对于出海商家而言,由于不同国家和地区的支付规则和监管机制不同,跨境…

实现 Notification 通知

如图这种效果 可以使用 Notification API来进行实现 代码如下 注意&#xff1a;一定要用服务端打开。不然不会弹出来。vscode可以安装 live Serve 插件服务端打开 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8">…

Mac强制停止应用

有时候使用Mac的时候&#xff0c;某个应用卡住了&#xff0c;但是肯定不能因为一个应用卡住了&#xff0c; 就将电脑重启吧&#xff0c;所以只需要单独停止该应用即可&#xff0c;使用快捷键optioncommandesc就会出现强制停止的界面&#xff0c;选择所要停止的应用&#xff0c;…

【css】属性选择器

有些场景中需要在相同元素中获取具有特定属性的元素&#xff0c;比如同为input&#xff0c;type属性有text、button&#xff0c;可以通过属性选择器设置text和button的不同样式。 代码&#xff1a; <style> input[typetext] {width: 150px;display: block;margin-bottom…

64 # 实现一个 http-server

准备工作 上一节实现了通过 commander 的配置获取到用户的参数&#xff0c;下面完成借用 promise 写成类的方法一节没有完成的任务&#xff0c;实现一个 http-server&#xff0c;https://www.npmjs.com/package/http-server&#xff0c;http-server 是一个简单的零配置命令行静…

【每日一题】—— B. Maximum Rounding(Codeforces Round 891 (Div. 3))

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

opencv基础-34 图像平滑处理-2D 卷积 cv2.filter2D()

2D卷积是一种图像处理和计算机视觉中常用的操作&#xff0c;用于在图像上应用滤波器或卷积核&#xff0c;从而对图像进行特征提取、平滑处理或边缘检测等操作。 在2D卷积中&#xff0c;图像和卷积核都是二维的矩阵或数组。卷积操作将卷积核在图像上滑动&#xff0c;对每个局部区…

【图像去噪】基于混合自适应(EM 自适应)实现自适应图像去噪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

怎么加密文件夹才更安全?安全文件夹加密软件推荐

文件夹加密可以让其中数据更加安全&#xff0c;但并非所有加密方式都能够提高极高的安全强度。那么&#xff0c;怎么加密文件夹才更安全呢&#xff1f;下面我们就来了解一下那些安全的文件夹加密软件。 文件夹加密超级大师 如果要评选最安全的文件夹加密软件&#xff0c;那么文…

ATFX汇市:美联储年内或仍将加息依次,美指向下空间不大

环球汇市行情摘要—— 昨日&#xff0c;美元指数上涨0.08%&#xff0c;收盘在102.08点&#xff0c; 欧元贬值0.07%&#xff0c;收盘价1.1003点&#xff1b; 日元贬值0.51%&#xff0c;收盘价142.47点&#xff1b; 英镑升值0.28%&#xff0c;收盘价1.2784点&#xff1b; 瑞…

模拟实现消息队列项目(系列7) -- 实现BrokerServer

目录 前言 1. 创建BrokerServer类 1.1 启动服务器 1.2 停止服务器 1.3 处理一个客户端的连接 1.3.1 解析请求得到Request对象 1.3.2 根据请求计算响应 1.3.3 将响应写回给客户端 1.3.4 遍历Session的哈希表,把断开的Socket对象的键值对进行删除 2. 处理订阅消息请求详解(补充) …