当前位置: 首页 > news >正文

以攻击者的视角进行软件安全防护

1. 前言

孙子曰:知彼知己者,百战不殆;不知彼而知己,一胜一负,不知彼,不知己,每战必殆。 摘自《 孙子兵法·谋攻篇 》

在2500 年前的那个波澜壮阔的春秋战国时代,孙子兵法的这段话,给出了作战的三个层次。这个思想同样适用于软件的安全的攻防。

  • 充足的防御准备与对攻击者观点的理解相结合,可以更好的为软件安全带来保证;
  • 仅靠充足的防御措施可以保护系统免受已知威胁,但软件系统仍容易受到外部的的攻击;
  • 缺乏主动防御和对攻击者视角的理解,会让软件系统完全称为待宰的肉鸡。

为了构建安全的软件,构建者必须确保已经保护了所有相关的潜在漏洞。然而,要攻击软件,攻击者通常只需要找到并利用一个暴露的漏洞。

为了识别和缓解软件中的相关漏洞,开发者需要的不仅仅是良好的软件工程和分析实践、对软件安全功能的扎实掌握以及一套强大的工具。所有这些都是必要的,但不是充分的。

为了有效地应对软件攻击,防护者需要牢牢掌握攻击者的观点和用于利用软件系统的方法。

了解对手的运作方式对于有效的网络安全至关重要。

2. 通用攻击模式枚举与分类(Common Attack Pattern Enumeration and Classification(CAPEC))

通用攻击模式枚举与分类(Common Attack Pattern Enumeration and Classification(CAPEC)) 向我们提供了一个攻击者视角的攻击模式,以帮助增强整个软件开发生命周期的安全性,并支持开发人员、测试人员和教育工作者的需求。

CAPEC 以正向和建设性的方式表达攻击者的观点,为各级软件开发人员提供专家级的理解和指导,让他们了解他们的软件可能如何受到攻击,从而使他们能够构建更安全的软件。

CAPEC 通过提供一个全面的已知攻击模式字典来帮助攻击者利用网络能力中的已知弱点。

分析师、开发人员、测试人员和教育工作者可以使用它来促进社区理解和增强防御。

常见攻击模式枚举和分类提供了一个公开可用的常见攻击模式目录,帮助用户了解攻击者如何利用应用程序和其他网络功能中的弱点。

“攻击模式”是对攻击者利用网络能力的已知弱点所采用的常见属性和方法的描述。攻击模式定义了对手可能面临的挑战以及他们如何解决这些挑战。它们源自在破坏性而非建设性环境中应用的设计模式概念,并产生于对特定现实世界漏洞利用示例的深入分析。

每个攻击模式都会获取有关如何设计和执行攻击的特定部分的知识,并提供有关降低攻击有效性的方法的指导。攻击模式可帮助开发应用程序或管理网络功能的人员更好地了解攻击的特定元素以及如何阻止它们成功。

2.1. 节点类别

和 CWE 类似,CAPEC 以树、节点的方式展示攻击模式。

图标节点类型节点描述

类别(Category)是基于某些常见特征的攻击模式的集合, 是基于效果/意图的攻击模式聚合, 聚合元攻击模式。
基于效果/意图的聚合不是可操作的攻击,因此不是一种攻击行为模式, 它是基于一些常见标准的一组模式。

元攻击模式(Meta Attack Pattern)是对攻击中使用的特定方法或技术的绝对抽象的描述。
元攻击模式通常没有特定的技术或实现,旨在提供对高级方法的理解。
元级别攻击模式是标准级别攻击模式的相关组的泛化。
元级攻击模式对于架构和设计级威胁建模练习特别有用。

标准攻击模式(Standard Attack Pattern)侧重于攻击中使用的特定方法或技术。它通常被视为完全执行的攻击的单个部分。标准攻击模式旨在提供足够的详细信息来了解特定技术以及它如何尝试实现预期目标。标准级别攻击模式是更抽象的元级别攻击模式的一种特定类型。

详细攻击模式(Detailed Attack Pattern)提供较低级别的详细信息,通常利用特定技术并针对特定技术,并表示完整的执行流程。详细的攻击模式比元攻击模式和标准攻击模式更具体,并且通常需要特定的保护机制来缓解实际攻击。详细的级别攻击模式通常会利用链接在一起的许多不同的标准级别攻击模式来实现目标。

2.2. 视图

2.2.1. 攻击机制的视图(CAPEC-1000)

视图根据利用漏洞时经常使用的机制分层组织攻击模式。作为该视图成员的类别代表用于攻击系统的不同技术。它们并不代表攻击的后果或目标。根据不同人的观点,某些攻击模式有可能与多个类别保持一致。为了解决这个问题,重点放在了每个类别中呈现的攻击模式,而不是有时,但无一例外地使用一种技术。

  • 本视图包含的节点
-这个视图全部
攻击模式541541
类别915
视图011
总计550567

2.2.2. 攻击域的视图(CAPEC-3000)

视图根据攻击域分层组织攻击模式。

  • 本视图包含的节点
-这个视图全部
攻击模式541541
类别615
视图011
总计547567

2.2.3. 扩展视图

扩展视图用于表示映射到外部分组(如前 N 个列表)的映射,以及表示由某些外部因素相关的条目子集。

  • CAPEC-333:按 WASC 威胁分类 2.0 查看

    • 过滤条件:
      /Attack_Pattern_Catalog/*/*[Taxonomy_Mappings/Taxonomy_Mapping[@Taxonomy_Name='WASC']]
  • CAPEC-658:按 ATT&CK 相关模式查看

    • 过滤条件:
      /Attack_Pattern_Catalog/*/*[Taxonomy_Mappings/Taxonomy_Mapping[@Taxonomy_Name='ATTACK']]
  • CAPEC-659:按 OWASP 相关模式查看

    • 过滤条件:
      /Attack_Pattern_Catalog/*/*[Taxonomy_Mappings/Taxonomy_Mapping[@Taxonomy_Name='OWASP Attacks']]

2.2.4. 有用的视图

已创建许多其他有用的视图。这些基于特定标准,希望为特定域或用例提供见解。

  • CAPEC-703:按工业控制系统(ICS)模式查看
  • CAPEC-683:按供应链风险查看
  • CAPEC-553:按移动设备模式查看
  • CAPEC-2000:按综合 CAPEC 词典查看
  • CAPEC-282:按元抽象查看
  • CAPEC-283:按标准抽象查看
  • CAPEC-284:按详细抽象查看
  • CAPEC-483:按已弃用的条目查看

3. 例子:CAPEC-34

标题描述
名称HTTP 响应拆分
典型严重性
描述HTTP 响应拆分通过发送 HTTP 响应流,使其被解释为两个单独的响应,而不是单个响应,从而导致易受攻击的 Web 服务器响应恶意构建的请求。当用户控制的输入未经验证地用作响应标头的一部分时,这是可能的。攻击者可以让受害者将注入的标头解释为对第二个虚拟请求的响应,从而导致显示并可能缓存构建的内容。为了在易受攻击的 Web 服务器上实现 HTTP 响应拆分,攻击者:
1. 标识导致任意 HTTP 标头注入的用户可控制输入。
2. 制作包含数据的恶意输入以终止原始响应,并使用攻击者控制的标头启动第二个响应。
3. 使受害者向服务器发送两个请求。第一个请求由恶意构建的输入组成,用作 HTTP 响应标头的一部分,第二个请求是虚拟请求,以便受害者将拆分响应解释为属于第二个请求。
攻击先决条件用户控制的输入用作 HTTP 标头的一部分 攻击者能够在 HTTP 标头中注入自定义字符串 应用程序中的输入验证不足,无法在将其用作响应标头的一部分之前检查输入的健全性
典型的利用可能性中等
攻击方法注入
协议操作
示例 - 实例在 PHP 5 会话扩展机制中,用户提供的会话 ID 在 Set-Cookie HTTP 头中发送回给用户。由于用户提供的会话 ID 的内容未经过验证,因此可以将任意 HTTP 标头注入响应正文。这立即启用了 HTTP 响应拆分,只需从 Set-Cookie 指令中使用的会话 ID 中终止 HTTP 响应标头即可。CVE-2006-0207 漏洞
攻击者技能或所需知识高 - 攻击者需要对 HTTP 协议和 HTTP 标头有深入的了解,并且必须能够构建和注入请求以引出拆分响应。
所需资源
探测技术使用可用的源代码,攻击者可以在将用户输入用作输出的一部分之前查看用户输入是否经过验证。这也可以通过静态代码分析工具来实现 如果源代码不可用,攻击者可以尝试注入 CR-LF 序列(通常在输入中编码为 %0d%0a)并使用 Paros 等代理来观察响应。如果生成的注入导致无效请求,则 Web 服务器还可能指示协议错误。
标识 - 攻击警告唯一的标识是对 Web 日志中单个请求的多个响应。但是,在没有应用程序筛选器代理或日志分析器的情况下,很难注意到这一点。客户端没有标识
解决方案和缓解措施为避免 HTTP 响应拆分,应用程序不得依赖用户可控制的输入来构成其输出响应流的一部分。具体来说,响应分裂是由于注入 CR-LF 序列和附加标头而发生的。来自用户并用作 HTTP 响应标头一部分的所有数据都必须经过严格验证,以执行简单的基于字符的语义筛选,以去除恶意字符序列和标头。
攻击动机-后果执行未经授权的代码或命令
获取权限/代入身份
上下文描述HTTP 响应拆分攻击发生在服务器脚本将用户可控制的数据嵌入 HTTP 响应标头中的位置。当脚本将此类数据嵌入重定向响应的重定向 URL(HTTP 状态代码 3xx)中时,或者当响应设置 Cookie 时脚本将此类数据嵌入 Cookie 值或名称中时,通常会发生这种情况。在第一种情况下,重定向 URL 是 Location HTTP 响应标头的一部分,在 Cookie 设置中,Cookie 名称/值对是 Set- Cookie HTTP 响应标头的一部分。
注入向量用户可控制的输入,构成输出 HTTP 响应标头的一部分
有效载荷编码的 HTTP 标头和数据由适当的 CR-LF 序列分隔。注入的数据必须包含合法且格式正确的 HTTP 标头以及作为 HTML 正文包含的所需脚本。
激活区域应用程序中设置输出响应标头的激活区域 API 调用。
负载激活冲击有效负载激活的影响在于,向目标发出两个不同的 HTTP 响应,第一个响应解释为对假定有效请求的响应,第二个响应(导致实际攻击)是对攻击者发出的第二个虚拟请求的响应。
CIA 影响机密性影响:高
完整性影响:高
可用性影响:低
相关弱点CWE113 - HTTP 响应拆分 - 目标
CWE74 - 注入 - 辅助
CWE697 - 比较不足 - 目标
CWE707 - 消息或数据结构执行不当 - 目标
CWE713 - OWASP 2007 年前十名 A2 类别 - 注入缺陷 - 目标
安全要求所有客户端提供的输入都必须通过筛选进行验证,并且所有输出都必须正确转义。
安全原则不愿信任
相关准则永远不要相信用户提供的输入。
参考G. Hoglund 和 G. McGraw。利用软件:如何破解代码。Addison-Wesley,2004 年 2 月。

4. CAPEC 与 ATT&CK 比较

了解对手的行为在网络安全中越来越重要。有两种方法可以组织有关对手行为的知识 – CAPEC 和 ATT&CK,每种方法都专注于一组特定的用例。

CAPEC 和 ATT&CK 之间的相似之处、不同之处和关系,以及它们在网络安全中的作用。

  • 常见攻击模式枚举和分类(Common Attack Pattern Enumeration and Classification (CAPEC))
    CAPEC 专注于应用程序安全,并描述了攻击者用来利用网络支持功能中的已知弱点的常见属性和技术。(例如,SQL 注入、XSS、会话固定、点击劫持)

    • 关注应用程序安全性
    • 列举针对易受攻击系统的漏洞
    • 包括社会工程/供应链
    • 与常见弱点枚举(Common Weakness Enumeration (CWE))相关
  • 对抗性策略、技术和常识 (Adversarial Tactics, Techniques & Common Knowledge (ATT&CK))
    ATT&CK 专注于网络防御,描述了对手生命周期中的操作阶段,即漏洞利用前后(例如,持久性、横向移动、渗透),并详细介绍了高级持续性威胁 (APT) 在网络内定位、妥协和操作时用于执行其目标的特定策略、技术和程序 (TTP)。

    • 专注于网络防御
    • 基于威胁情报和红队研究
    • 提供对恶意行为的上下文理解
    • 支持防御选项的测试和分析

4.1. 关联

CAPEC 列举的许多攻击模式都是由 ATT&CK 描述的特定技术被攻击者采用的。这样就可以对对手操作生命周期内的攻击模式进行上下文理解。CAPEC 攻击模式和相关的 ATT&CK 技术在适当的时候在这两项工作之间进行交叉引用。

4.2. 使用上的差异

4.2.1. CAPEC 可用于

  • 应用程序威胁建模
  • 开发人员培训和教育
  • 渗透测试

4.2.2. ATT&CK 可用于

  • 比较计算机网络防御功能
  • 抵御高级的持续威胁
  • 搜寻新威胁
  • 增强威胁情报
  • 对手仿真练习

5. 参考

  • CAPEC: https://capec.mitre.org/
  • ATT&ACK: https://attack.mitre.org/

相关文章:

以攻击者的视角进行软件安全防护

1. 前言 孙子曰:知彼知己者,百战不殆;不知彼而知己,一胜一负,不知彼,不知己,每战必殆。 摘自《 孙子兵法谋攻篇 》在2500 年前的那个波澜壮阔的春秋战国时代,孙子兵法的这段话&…...

Go 语言性能优化全解析

在当今的软件开发环境中,Go 语言(Golang)因其简洁的语法、高效的并发模型和快速的编译速度而备受青睐。然而,随着应用程序复杂性的增加,即使是在 Go 中也可能会遇到性能瓶颈。为了帮助开发者构建高性能的应用程序&…...

《智能体雏形开发(高阶实操)》二、智能体雏形开发

基于阿里云百炼平台开发智能体应用:生成日报与周报 在智能体开发中,生成结构化的日报与周报是一个典型的任务。本篇文章将基于阿里云百炼平台,结合 Python 开发环境,介绍如何开发一个从日志文件提取信息并生成摘要的智能体。我们将从需求分析、任务设计到核心功能实现逐步…...

【k8s】kubelet 和 API Server的关系

文章目录 概述1. # kubelet 和 API Server 之间的关系**1. 角色和功能****1.1 kubelet****1.2 API Server** **2. 交互关系****2.1 kubelet 从 API Server 获取指令****2.2 kubelet 向 API Server 上报状态****2.3 kubelet 与 API Server 的认证和授权** **3. 典型交互场景****…...

POSTGRESQL跟ORACLE语法区别和相同之处

跟ORACLE语法区别之处 1. Update和delete语法区别 Pg 和MySQL Update和delete的时候表名不能加别名 2. 插入数字类型不一样 ORACLE 对number类型的数据可以用’’ 字符串标记插入,但是PG不行,必须要进行正确的数据类型 3. SEQ使用不同 ORACEL的SEQ…...

Distance in Tree 树形dp练习(树中两点距离为k的数量板子)

Distance in Tree 题面翻译 题目大意 输入点数为 N N N一棵树 求树上长度恰好为 K K K的路径个数 输入格式 第一行两个数字 N , K N,K N,K,如题意 接下来的 N − 1 N-1 N−1行中,每行两个整数 u , v u,v u,v表示一条树边 ( u , v ) (u,v) (u,v) 输出格式 一个整数 a n…...

【MySQL】库的操作+表的操作

库的操作表的操作 1.库的操作 1.1创建数据库1.2删除数据库1.3查找数据库1.4修改数据库1.5数据库备份和恢复1.6查看连接情况 2.库的操作 2.1创建表2.2查看表结构2.3修改表2.4删除表 点赞???收藏???关注??? 你的支持是对我最大的鼓励,我们一起努力吧???…...

vue异步更新,$nextTick

如果将isShowEdit改为true,就会显示输入框和确认按钮、 如果isShowEdit为false的话就显示“大标题”和编辑 想要获取元素焦点,但是vue是异步更新,会出错显示this.$refs.inp是undefined,是因为input元素并没有更新完成,所以需要使用…...

【3D AIGC】Img-to-3D、Text-to-3D、稀疏重建(2024年文章汇总)

文章目录 1. Wonderworld:拓展图片边界,生成3D场景2. 3DTopia-XL:扩散模型辅助生成3. 3DGS-Enhancer: 通过视图一致2D Diffusion,提升无界3D Gaussian Splatting (NlPs2024 Spotlight)4. L3DG:Latent 3D Gaussian Diff…...

简单的springboot使用sse功能

什么是sse? 1、SSE 是Server-Sent Events(服务器发送事件) 2、SSE是一种允许服务器主动向客户端推送实时更新的技术。 3、它基于HTTP协议,并使用了其长连接特性,在客户端与服务器之间建立一条持久化的连接。 通过这条连接&am…...

Nginx 防止IP伪造,绕过IP限制

背景介绍 在使用Nginx时,需要将IP地址转发到后置应用中,往往需要增加配置 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 在后端程序通过读取请求头里的X-Forwarded-For来获取用户客户端IP。 public String getRemortIP(HttpServle…...

原生js仿el-table动态表头

解决动态表头数据量过大导致页面卡顿的问题解决固定前几列导致表头设置宽度失效或者错位的问题功能&#xff1a; 固定前几列合并指定单元格 <div class"tableJoint2"><div><table id"tableData"></table></div><div>…...

【opencv入门教程】9.视频加载

文章选自&#xff1a; 一、VideoCapture类 用于从视频文件、图像序列或摄像头捕获视频的类。函数&#xff1a;CV_WRAP VideoCapture();brief 默认构造函数CV_WRAP explicit VideoCapture(const String& filename, int apiPreference CAP_ANY);brief 使用 API 首选项打开…...

数据结构 ——无头单链表

数据结构 ——无头单链表 一、无头单链表的定义与特性 1、单链表简介 单链表是一种常见的基础数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含数据部分和指向下一个节点的指针。无头单链表是单链表的一种变体&#xff0c;其特点是没有明确的头节点&#xff0…...

【UE5】制作插件 并调试【vs2022】

视频教程&#xff1a;好看视频-轻松有收获 https://www.youtube.com/watch?vIjpa9mI2b5I 原文&#xff1a;【UE】制作插件_ue插件-CSDN博客 C制作插件 1. 我们可以在C工程中创建更多类型的插件&#xff0c;这里我们选择“空白”作为模板来创建插件 点击“创建插件”按钮后…...

Prometheus 采集postgresql监控数据

postgres_exporter 前言 postgres_exporter 是一个用于监控 PostgreSQL 数据库的 Prometheus 导出器。它允许你收集有关 PostgreSQL 数据库性能和状态的指标,并将这些指标暴露给 Prometheus,从而可以在 Grafana 等可视化工具中进行展示和告警。 postgres_exporter download…...

网络分层模型( OSI、TCP/IP、五层协议)

1、网络分层模型 计算机网络是一个极其复杂的系统。想象一下最简单的情况&#xff1a;两台连接在网络上的计算机需要相互传输文件。不仅需要确保存在一条传输数据的通路&#xff0c;还需要完成以下几项工作&#xff1a; 发起通信的计算机必须激活数据通路&#xff0c;这包括发…...

POI遍历行所有单元格的两种方式,getPhysicalNumberOfCells方式有问题,勿用

今天看POI源码的时候&#xff0c;发现HSSFWorkbook类型的工作簿&#xff0c;行数据是用TreeMap<Integer, HSSFRow>存储的&#xff0c;列数据是用HSSFCell[]数组来存的&#xff1b;XSSFWorkbook类型的工作簿&#xff0c;行数据是用SortedMap<Integer, XSSFRow>存储的…...

Latex转word(docx)或者说PDF转word 一个相对靠谱的方式

0. 前言 投文章过程中总会有各种各样的要求&#xff0c;其中提供word格式的手稿往往是令我头疼的一件事。尤其在多公式的文章中&#xff0c;其中公式转换是一个头疼的地方&#xff0c;还有很多图表&#xff0c;格式等等&#xff0c;想想就让人头疼欲裂。实践中摸索出一条相对靠…...

敖汉宝塔油页岩露天矿山安全自动化监测

1. 项目简介 本次项目位于内蒙古自治区赤峰市敖汉旗宝国吐乡大青山村&#xff0c;地理位置好。主营许可经营项目&#xff1a;无一般经营项目&#xff1a;页岩油生产&#xff1b;页岩油、润滑油、建筑材料&#xff08;不含油漆&#xff09;销售等单位规模1-20人&#xff0c;单位…...

Android笔记【14】结合LaunchedEffect实现计时器功能。

一、问题 cy老师第五次作业 结合LaunchedEffect实现计时器功能。要求&#xff1a;动态计时&#xff0c;每秒修改时间&#xff0c;计时的时间格式为“00&#xff1a;00&#xff1a;00”&#xff08;小时&#xff1a;分钟&#xff1a;秒&#xff09;提交源代码的文本和运行截图…...

三维重建(单目、双目、多目、点云、SFM、SLAM)

1 相机几何与标定1.1 相机模型中的坐标系1.2 四种坐标系之间的转换1.3 相机内参1.4 相机标定 2 传统三维重建2.1 RGBD三维重建2.1.1 KinectFusion2.1.2 BundleFusion 2.1 MVS三维重建2.2.1 COLMAP2.2.2 OpenMVS 3 点云三维重建3.1 3D点云任务3.2 点云数据3.3 特征提取3.3.1 Poi…...

软体机器人动态手内笔旋转研究

人工智能咨询培训老师叶梓 转载标明出处 软体机器人因其在安全互动方面的优势而备受关注&#xff0c;但在高速动态任务中却面临挑战。最近&#xff0c;卡内基梅隆大学机器人研究所的研究团队提出了一种名为SWIFT的系统&#xff0c;旨在通过学习和试错来实现软体机器人手的动态…...

福昕PDF低代码平台

福昕PDF低代码平台简介 福昕PDF 低代码平台是一款创新的工具&#xff0c;旨在简化PDF处理和管理的流程。通过这个平台&#xff0c;用户可以通过简单的拖拽界面上的按钮&#xff0c;轻松完成对Cloud API的调用工作流&#xff0c;而无需编写复杂的代码。这使得即使没有编程经验的…...

【笔记】Linux中使用到的一些操作

1、查找指定文件并执行删除 find . -name "checkpoint_*_*.pth" -type f -exec rm -f {} \; 2、查看每个文件夹占用空间 du -h --max-depth1 3、移动文件 mv valid.zip ./xg mv 文件 目标位置 4、删除文件夹 rmdir folder rm -r folder # 递归删除文件夹下所有内容…...

深入浅出:PHP中的表单处理全解析

引言 在Web开发的世界里&#xff0c;表单是用户与服务器之间交互的重要桥梁。它们允许用户提交信息&#xff0c;并通过后端语言&#xff08;如PHP&#xff09;进行处理。本文将带你深入了解PHP中的表单处理&#xff0c;从基础的创建和提交到高级的安全措施和实用技巧&#xff…...

智已汽车x-signature 登录算法 签到

智已汽车x-signature 登录算法 签到 python代码成品...

一、测试工具LoadRunner Professional脚本编写-录制前设置

设置基于URL的脚本 原因:基于HTML的脚本会导致login接口不能正确录制 设置UTF-8 原因:不勾选此项会导致脚本中文变为乱码...

LSTM+改进的itransformer时间序列预测模型代码

代码在最后 本次设计了一个LSTM基于差分多头注意力机制的改进的iTransformer时间序列预测模型结合了LSTM&#xff08;长短期记忆网络&#xff09;和改进版的iTransformer&#xff08;差分多头注意力机制&#xff09;&#xff0c;具备以下优势&#xff1a; 时序特征建模能力&am…...

linux中 Systemd 和 cgroups 的关系详解

systemd 是 Linux 的一个初始化系统和服务管理器&#xff0c;它依赖于 Linux 内核的 cgroups&#xff08;Control Groups&#xff09;功能来实现对系统资源的高效管理。以下是对两者关系的详细解读&#xff1a; 1. 什么是 cgroups&#xff1f; cgroups 是 Linux 内核提供的一种…...

发布Apache2.4** 局域网无法访问

1。 防火墙关闭 或者 设置入站规则 2&#xff0c;查看httpd.conf 文件 设置配置 原 Listen 80 修改成 Listen 192.168.31.127:90 3.确保 本地IP 是否正确...

【JAVA】Java高级:多数据源管理与Sharding:在Spring Boot应用中实现多数据源的管理

一个电商平台可能需要一个数据库来存储用户信息&#xff0c;另一个数据库来存储订单信息&#xff0c;甚至可能还有一个数据库用于数据分析。这种情况下&#xff0c;如何在Spring Boot应用中实现多数据源的管理就显得尤为重要。 1. 多数据源管理的重要性 在实际应用中&#xf…...

Android 分词的两种方式

前言&#xff1a; 本文分别介绍了原生和三方(Jieba)两种分词方式的使用和注意事项 1、安卓原生BreakIterator分词 比较简单&#xff0c;但是效果不太行 /*** 功能&#xff1a;原生分词* 参数&#xff1a;text&#xff1a;需要分词的语句* 返回值&#xff1a;return&#xf…...

【开源免费】基于SpringBoot+Vue.JS中小型医院网站(JAVA毕业设计)

博主说明&#xff1a;本文项目编号 T 078 &#xff0c;文末自助获取源码 \color{red}{T078&#xff0c;文末自助获取源码} T078&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...

数据结构代码归纳

1.线性表 线性表的顺序表示 定义与初始化 typedef struct SqList{ElemType data[MaxSize];//ElemType *data 开动态数组 int length; }Sqlist; void InitList(SqList &L){L.length0;//若静态数组//若动态数组 //L.data(ElemType*)malloc(sizeof(ElemType)*MaxSize); }…...

2024-金盾信安杯线上赛 WP

Misc 大赛宗旨 记事本打开&#xff0c;一眼零宽隐写 B 神工具一把梭&#xff0c;得到一串 base 编码 base64 解码得到 flag flag 值&#xff1a;flag{5d5555fa-1303-4b43-8eef-d6ea7c64c361} esab 根据题目 esab 可以发现这正是 base 的逆向&#xff0c;所以可以先逆向一下…...

iOS如何自定义一个类似UITextView的本文编辑View

对于IOS涉及文本输入常用的两个View是UITextView和UITextField&#xff0c;一个用于复杂文本输入&#xff0c;一个用于简单文本输入&#xff0c;在大多数开发中涉及文本输入的场景使用这两个View能够满足需求。但是对于富文本编辑相关的开发&#xff0c;这两个View就无法满足自…...

JavaWeb文件上传

文件上传总览 文件上传主要是指将本地文件&#xff08;包括但不限于图片、视频、音频等&#xff09;上传到服务器&#xff0c;提供其他用户浏览或下载的过程。在日常生活中&#xff0c;我们在很多情况下都需要使用文件上传功能&#xff0c;比如&#xff1a;发微博、发朋友圈等…...

C#实现1ms定时器不精准?如何实现一个高性能高精度的1ms定时器?(附完整示例Demo)

在C#日常开发中&#xff0c;我们经常需要使用定时器&#xff08;Timer&#xff09;进行周期性任务的执行。 例如&#xff0c;每隔1秒打印一条日志&#xff0c;或每隔100毫秒执行某个数据刷新逻辑。 但是&#xff0c;当我们尝试在C#中实现一个1毫秒&#xff08;1ms&#xff09;…...

LeetCode 3. 无重复字符的最长子串

题目链接&#xff1a;3. 无重复字符的最长子串 首先想到的就是暴力破解&#xff0c;直接两层循环遍历&#xff0c;因为它说求无重复&#xff0c;那就可以用 set 来存储遍历到的字符&#xff0c;如果遍历到了同样的字符(在 set 中存在)&#xff0c;就直接跳出第二层循环&#x…...

深度解析 Ansible:核心组件、配置、Playbook 全流程与 YAML 奥秘(上)

文章目录 一、ansible的主要组成部分二、安装三、相关文件四、ansible配置文件五、ansible 系列 一、ansible的主要组成部分 ansible playbook&#xff1a;任务剧本&#xff08;任务集&#xff09;&#xff0c;编排定义ansible任务集的配置文件&#xff0c;由ansible顺序依次执…...

记一次由docker容器使得服务器cpu占满密码和密钥无法访问bug

Bug场景&#xff1a; 前几天在服务器上部署了一个免费影视网站&#xff0c;这个应用需要四个容器&#xff0c;同时之前的建站软件workpress也是使用docker部署的&#xff0c;也使用了三个容器。在使用workpress之前&#xff0c;我将影视软件的容器全部停止。 再使用workpress…...

功能篇:JAVA实现记住我功能

在Java Web应用程序中实现“记住我”功能&#xff0c;通常涉及以下几个步骤&#xff1a; 1. 创建一个持久化的标识符&#xff08;如一个令牌或哈希值&#xff09;&#xff0c;并将其与用户账户关联。 2. 将这个标识符保存到客户端的cookie中。 3. 在服务器端&#xff0c;当用户…...

实现 DataGridView 下拉列表功能(C# WinForms)

本文介绍如何在 WinForms 中使用 DataGridViewComboBoxColumn 实现下拉列表功能&#xff0c;并通过事件响应来处理用户的选择。以下是实现步骤和示例代码。 1. 效果展示 该程序的主要功能是展示如何在 DataGridView 中插入下拉列表&#xff0c;并在选择某一项时触发事件。 2.…...

2024年上半年网络工程师综合知识真题及答案解析

2024年上半年网络工程师综合知识真题及答案解析 以下不属于5G网络优点的是()A.传输过程中消耗的资源少,对设备的电池更友好B.支持大规模物联网,能够连接大量低功耗设备,提供更高效的管理C.引入了网络切片技术,允许将物理网络划分为多个虚拟网络D.更好的安全性,采用更…...

数合平台功能-管理角色

前一阵&#xff0c;有朋友问到&#xff0c;看咱们产品的功能描述很强大&#xff0c;但很多功能看不到。为此&#xff0c;基于数据建模产品最新版本&#xff0c;和大家一起串一下产品的功能和使用路径。本节重点说一下管理角色有哪些功能 一、功能清单 从上图中可以看到&#x…...

LVGL9 开关控件 (lv_switch) 使用指南

文章目录 前言主体1. **控件概述**2. **控件的样式和组成部分**3. **使用控件**改变开关状态 4. **事件处理**5. **按键支持**6. **示例代码** 总结 前言 lv_switch 是 LittlevGL 提供的一个开关控件&#xff0c;外观类似一个小型滑块&#xff0c;常用于实现开关功能&#xff…...

麒麟 V10 系统(arm64/aarch64)离线安装 docker 和 docker-compose

前期准备 查看操作系统版本&#xff0c;跟本文标题核对一下 uname -a查看操作系统架构 uname -m下载离线包 下载 docker 离线包 地址&#xff1a;https://download.docker.com/linux/static/stable/ 选择系统架构对应的文件目录&#xff1a;aarch64&#xff0c;我目前使用…...

独立ip服务器有什么优点?

网站的性能和安全性直接影响到用户体验和业务发&#xff0c;独立IP服务器作为一种主流的托管方式&#xff0c;因其独特的优势而受到许多企业和个人站长的青睐。与共享IP相比&#xff0c;独立IP服务器到底有哪些优点呢&#xff1f; 使用独立IP的用户不必担心与其他网站共享同一…...

oracle之用户的相关操作

&#xff08;1&#xff09;创建用户(sys用户下操作) 简单创建用户如下&#xff1a; CREATE USER username IDENTIFIED BY password; 如果需要自定义更多的信息&#xff0c;如用户使用的表空间等&#xff0c;可以使用如下&#xff1a; CREATE USER mall IDENTIFIED BY 12345…...