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

DVWA靶场Brute Force (暴力破解) 漏洞low(低),medium(中等),high(高),impossible(不可能的)所有级别通关教程

目录

  • 暴力破解
    • low
      • 方法1
      • 方法2
    • medium
    • high
    • impossible

暴力破解

暴力破解是一种尝试通过穷尽所有可能的选项来获取密码、密钥或其他安全凭证的攻击方法。它是一种简单但通常无效率的破解技术,适用于密码强度较弱的环境或当攻击者没有其他信息可供利用时。暴力破解的基本原理是依次尝试所有可能的组合,直到找到正确的答案。

low

方法1

sql注入万能密码,输入admin’ or ‘1’=1

方法2

随意输入,然后抓包

发送到爆破模块,添加变量并选择集束炸弹模式

在pyload设置里设置字典攻击,然后开始攻击即可

筛选长度查看,攻击成功

代码审计

<?phpif( isset( $_GET[ 'Login' ] ) ) {// Get username$user = $_GET[ 'username' ];// Get password$pass = $_GET[ 'password' ];$pass = md5( $pass );                      //明文md5算法不安全// Check the database$query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";    //此处直接将用户输入的用户名和密码嵌入到 SQL 查询中,容易受到 SQL 注入攻击。攻击者可以通过输入特定的恶意字符串来操作数据库$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );if( $result && mysqli_num_rows( $result ) == 1 ) {// Get users details$row    = mysqli_fetch_assoc( $result );$avatar = $row["avatar"];// Login successful$html .= "<p>Welcome to the password protected area {$user}</p>";$html .= "<img src=\"{$avatar}\" />";}else {// Login failed$html .= "<pre><br />Username and/or password incorrect.</pre>";}((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}?>

medium

随意输入抓包并发送到爆破模块

添加变量选择集束炸弹模式攻击

pyload模块设置字典并攻击

攻击速度会比较慢,因为源码设置了每次登录后需要2秒才能再次登录,爆破成功

代码审计

<?phpif( isset( $_GET[ 'Login' ] ) ) {// Sanitise username input$user = $_GET[ 'username' ];$user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));// Sanitise password input$pass = $_GET[ 'password' ];$pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));$pass = md5( $pass );                  //md5算法不安全// Check the database$query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";    //代码使用 mysqli_real_escape_string 函数对用户输入进行清理,但仍然存在 SQL 注入的风险,因为 SQL 查询是通过字符串拼接的。$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );if( $result && mysqli_num_rows( $result ) == 1 ) {// Get users details$row    = mysqli_fetch_assoc( $result );$avatar = $row["avatar"];// Login successful$html .= "<p>Welcome to the password protected area {$user}</p>";$html .= "<img src=\"{$avatar}\" />";}else {// Login failedsleep( 2 );$html .= "<pre><br />Username and/or password incorrect.</pre>";}((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}?>

high

随意输入然后抓包,可以看到这里设置了token,token相当于一个房门的钥匙,没有它即使有账号密码也无法登录

选择交叉攻击,并且token也要设置变量

在设置里添加token,选中并添加

重定向选中总是

资源池设置最大并发请求为1,防止还没使用token就被刷掉

在设置里,攻击结果这取消勾选此选项

回到浏览器,找到token,复制下来

选中递归提取,并把刚复制的token复制进去

设置好字典后就可以攻击了

攻击成功

代码审计

<?phpif( isset( $_GET[ 'Login' ] ) ) {// 检查 Anti-CSRF 令牌checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );  // 增加了一个 token 检测// 清理用户名输入$user = $_GET[ 'username' ];$user = stripslashes( $user );  // 去除字符串中的反斜杠(\)$user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $user ) : ((trigger_error("[MySQLConverterToo] 修复 mysql_escape_string() 调用!此代码无法工作。", E_USER_ERROR)) ? "" : ""));// 对字符串中的特殊字符(\x00,\n,\r,\',\",\x1a)进行转义// 清理密码输入$pass = $_GET[ 'password' ];$pass = stripslashes( $pass );$pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass ) : ((trigger_error("[MySQLConverterToo] 修复 mysql_escape_string() 调用!此代码无法工作。", E_USER_ERROR)) ? "" : ""));$pass = md5( $pass );  // 将密码进行 MD5 哈希处理// 检查数据库$query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";  // 查询数据库$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );if( $result && mysqli_num_rows( $result ) == 1 ) {// 获取用户详情$row    = mysqli_fetch_assoc( $result );$avatar = $row["avatar"];// 登录成功$html .= "<p>欢迎来到受密码保护的区域 {$user}</p>";$html .= "<img src=\"{$avatar}\" />";}else {// 登录失败sleep( rand( 0, 3 ) );  // 随机暂停 0 到 3 秒$html .= "<pre><br />用户名和/或密码不正确。</pre>";}((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);  // 关闭数据库连接
}// 生成 Anti-CSRF 令牌
generateSessionToken();?>

impossible

这是最高的难度,其中每次登录都由GET提交方式改为POST提交方式,同样加了token校验机制,还有就是他限制的登录的次数,如果登录失败3次,账户就会被锁定,需要等待15,然后才能重新尝试。

代码审计

<?phpif( isset( $_POST[ 'Login' ] ) && isset ($_POST['username']) && isset ($_POST['password']) ) {// 检查 Anti-CSRF 令牌checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// 清理用户名输入$user = $_POST[ 'username' ];$user = stripslashes( $user ); // 去除字符串中的反斜杠(\)$user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $user ) : ((trigger_error("[MySQLConverterToo] 修复 mysql_escape_string() 调用!此代码无法工作。", E_USER_ERROR)) ? "" : ""));// 清理密码输入$pass = $_POST[ 'password' ];$pass = stripslashes( $pass );$pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass ) : ((trigger_error("[MySQLConverterToo] 修复 mysql_escape_string() 调用!此代码无法工作。", E_USER_ERROR)) ? "" : ""));$pass = md5( $pass ); // 将密码进行 MD5 哈希处理// 默认值$total_failed_login = 3; // 允许失败登录的最大次数$lockout_time       = 15; // 锁定时间(分钟)$account_locked     = false; // 账户是否被锁定// 检查数据库(检查用户信息)$data = $db->prepare( 'SELECT failed_login, last_login FROM users WHERE user = (:user) LIMIT 1;' );$data->bindParam( ':user', $user, PDO::PARAM_STR );$data->execute();$row = $data->fetch();// 检查用户是否被锁定if( ( $data->rowCount() == 1 ) && ( $row[ 'failed_login' ] >= $total_failed_login ) ) {// 用户被锁定//$html .= "<pre><br />此账户因登录错误过多而被锁定。</pre>";// 计算用户何时可以再次登录$last_login = strtotime( $row[ 'last_login' ] );$timeout    = $last_login + ($lockout_time * 60);$timenow    = time();/*print "最后一次登录时间是: " . date ("h:i:s", $last_login) . "<br />";print "当前时间是: " . date ("h:i:s", $timenow) . "<br />";print "超时时间是: " . date ("h:i:s", $timeout) . "<br />";*/// 检查是否经过足够的时间,如果没有,则锁定账户if( $timenow < $timeout ) {$account_locked = true;// print "账户已锁定<br />";}}// 检查数据库(如果用户名与密码匹配)$data = $db->prepare( 'SELECT * FROM users WHERE user = (:user) AND password = (:password) LIMIT 1;' );$data->bindParam( ':user', $user, PDO::PARAM_STR);$data->bindParam( ':password', $pass, PDO::PARAM_STR );$data->execute();$row = $data->fetch();// 如果登录有效if( ( $data->rowCount() == 1 ) && ( $account_locked == false ) ) {// 获取用户详情$avatar       = $row[ 'avatar' ];$failed_login = $row[ 'failed_login' ];$last_login   = $row[ 'last_login' ];// 登录成功$html .= "<p>欢迎来到受密码保护的区域 <em>{$user}</em></p>";$html .= "<img src=\"{$avatar}\" />";// 自上次登录以来,账户是否被锁定?if( $failed_login >= $total_failed_login ) {$html .= "<p><em>警告</em>: 可能有人正在暴力破解您的账户。</p>";$html .= "<p>登录尝试次数: <em>{$failed_login}</em>。<br />上一次登录尝试是在: <em>{$last_login}</em>.</p>";}// 重置错误登录计数$data = $db->prepare( 'UPDATE users SET failed_login = "0" WHERE user = (:user) LIMIT 1;' );$data->bindParam( ':user', $user, PDO::PARAM_STR );$data->execute();} else {// 登录失败sleep( rand( 2, 4 ) ); // 随机暂停2到4秒// 给用户一些反馈$html .= "<pre><br />用户名和/或密码不正确.<br /><br/>或者,账户因登录失败次数过多而被锁定.<br />如果是这种情况,<em>请在 {$lockout_time} 分钟后再试</em>.</pre>";// 更新错误登录计数$data = $db->prepare( 'UPDATE users SET failed_login = (failed_login + 1) WHERE user = (:user) LIMIT 1;' );$data->bindParam( ':user', $user, PDO::PARAM_STR );$data->execute();}// 设置最后登录时间$data = $db->prepare( 'UPDATE users SET last_login = now() WHERE user = (:user) LIMIT 1;' );$data->bindParam( ':user', $user, PDO::PARAM_STR );$data->execute();
}// 生成 Anti-CSRF 令牌
generateSessionToken();
?>

设置了防爆破模式,同时采用了更为安全的PDO(PHP Data Object)机制防御sql注入,这是因为不能使用PDO扩展本身执行任何数据库操作,而sql注入的关键就是通过破坏sql语句结构执行恶意的sql命令。

相关文章:

DVWA靶场Brute Force (暴力破解) 漏洞low(低),medium(中等),high(高),impossible(不可能的)所有级别通关教程

目录 暴力破解low方法1方法2 mediumhighimpossible 暴力破解 暴力破解是一种尝试通过穷尽所有可能的选项来获取密码、密钥或其他安全凭证的攻击方法。它是一种简单但通常无效率的破解技术&#xff0c;适用于密码强度较弱的环境或当攻击者没有其他信息可供利用时。暴力破解的基…...

山高路陡,无人机代替滑轨吊运物资极大提高做作业效率降低成本

在山高路陡的地区&#xff0c;无人机代替传统的滑轨吊运物资&#xff0c;极大地提高了作业效率并降低了成本。以下是对这一现象的详细分析&#xff1a; 一、无人机吊运的优势 1. 提高作业效率&#xff1a; 无人机能够快速响应并执行吊运任务&#xff0c;尤其在高山、陡峭或交…...

数据的高级处理——pandas模块进阶——数据的统计运算

今天的学习用有好几处与书上的内容有出入&#xff0c;不只是因为pycharm中函数更新、弃用的问题&#xff0c;还是作者有些疏忽。不过影响不大&#xff0c;运行报错&#xff0c;GPT分析一下&#xff0c;原因很简单。这里不进行详细书名&#xff0c;在下边的代码上已经进行详细的…...

【Leetcode】3280. 将日期转换为二进制表示

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 给你一个字符串 date&#xff0c;它的格式为 yyyy-mm-dd&#xff0c;表示一个公历日期。 date 可以重写为二进制表示&#xff0c;只需要将年、月、日分别转换为对应的二进制表示&a…...

Vue3 中自定义hook

什么是hook&#xff1f;—— 本质是一个函数&#xff0c;把setup函数中使用的Composition API进行了封装&#xff0c;类似于vue2.x中的mixin。 自定义hook的优势&#xff1a;复用代码, 让setup中的逻辑更清楚易懂。 场景需求&#xff1a;现在我需要获取当前鼠标所点击的地方的…...

嵌入式系统 第七讲 ARM-Linux内核

• 7.1 ARM-Linux内核简介 • 内核&#xff1a;是一个操作系统的核心。是基于硬件的第一层软件扩充&#xff0c; 提供操作系统的最基本的功能&#xff0c;是操作系统工作的基础&#xff0c;它负责管理系统的进程、内存、设备驱动程序、文件和网络系统&#xff0c; 决定着系统的…...

音视频入门基础:MPEG2-PS专题(2)——使用FFmpeg命令生成ps文件

一、错误的命令 通过FFmpeg命令可以将mp4文件转换为ps文件&#xff0c;PS文件中包含PS流数据。 由于PS流/PS文件对应的FFInputFormat结构为&#xff1a; const FFInputFormat ff_mpegps_demuxer {.p.name "mpeg",.p.long_name NULL_IF_CONFIG_SMALL…...

Embedding

Embedding 在机器学习中&#xff0c;Embedding 主要是指将离散的高维数据&#xff08;如文字、图片、音频&#xff09;映射到低纬度的连续向量空间。这个过程会生成由实数构成的向量&#xff0c;用于捕捉原始数据的潜在关系和结构。 Text Embedding工作原理 词向量化&#x…...

Android Studio学习笔记

01-课程前面的话 02-Android 发展历程 03-Android 开发机器配置要求 04-Android Studio与SDK下载安装 05-创建工程与创建模拟器...

Git的使用流程(详细教程)

目录 01.Git是什么&#xff1f; 1.1 Git简介 1.2 SVN与Git的最主要的区别 1.3 GIt主要特点 02.Git是干什么的&#xff1f; 2.1.Git概念汇总 2.2 工作区/暂存区/仓库 2.3 Git使用流程 03.Git的安装配置 3.1 Git的配置文件 3.2 配置-初始化用户 3.3 Git可视化…...

Keil中的gcc

文章目录 一、IDE背后的命令1.1 IDE是什么1.2 IDE的背后是命令1.3 有两套主要的编译器 二、准备工作2.1 arm-linux-gcc和gcc是类似的2.2 Code::Blocks2.2.1 设置windows环境变量2.2.2 命令行示例 三、gcc编译过程详解3.1 程序编译4步骤3.2 gcc的使用方法3.2.1 gcc使用示例3.2.2…...

bilibili 哔哩哔哩小游戏SDK接入

小游戏的文档 简介 bilibili小游戏bilibili小游戏具有便捷、轻量、免安装的特点。游戏包由云端托管&#xff0c;在哔哩哔哩APP内投放和运行&#xff0c;体验流畅&#xff0c;安全可靠。https://miniapp.bilibili.com/small-game-doc/guide/intro/ 没想过接入这个sdk比ios还难…...

springboot523基于Spring Boot的大学校园生活信息平台的设计与实现(论文+源码)_kaic

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本大学校园生活信息平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…...

【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测

目录 论文信息 论文创新点 1.自适应轻量通道分割和洗牌&#xff08;ALSS&#xff09;模块 2.轻量坐标注意力&#xff08;LCA&#xff09;模块 3.单通道聚焦模块 4.FineSIOU损失函数 摘要 架构设计 轻量高效网络架构 - ALSS模块 LCA模块 单通道聚焦模块 损失函数优…...

XML解析

一&#xff0c;XML概述 1.什么是XML XML即为可扩展的标记语言&#xff08;eXtensible Markup Language&#xff09; XML是一套定义语义标记的规则&#xff0c;这些标记将文档分成许多部件并对这些部件加以标识 2.XML和HTML不同之处 XML主要用于说明文档的主题&#xff0c;而…...

PlasmidFinder:质粒复制子的鉴定和分型

质粒&#xff08;Plasmid&#xff09;是一种细菌染色体外的线性或环状DNA分子&#xff0c;也是一种重要的遗传元素&#xff0c;它们具有自主复制能力&#xff0c;可以在细菌之间传播&#xff0c;并携带多种重要的基因(如耐药基因与毒力基因等)功能。根据质粒传播的特性&#xf…...

PTA数据结构作业一

6-1 链表的插入算法 本题要求实现一个插入函数&#xff0c;实现在链表llist中的元素x之后插入一个元素y的操作。 函数接口定义&#xff1a; int InsertPost_link(LinkList llist, DataType x, DataType y); 其中 llist是操作的链表&#xff0c;x是待插入元素y的前驱节点元素…...

2024年总结【第五年了】

2024年总结 北国绕院扫雪&#xff0c;南方围炉烹茶&#xff0c;且饮一杯无? 执笔温暖不曾起舞日子里的点点滴滴&#xff0c;誊写一段回忆&#xff0c;还以光阴一段副本。 那么你要听一支新故事吗&#xff1f;第五年总结的片碎。 衣单天寒&#xff0c;走趟流星孤骑&#xf…...

java实现一个kmp算法

1、什么是KMP算法 Kmp 算法是由D.E.Knuth&#xff0c;J.H.Morris和V.R.Pratt提出的&#xff0c;改进字符串匹配的算法&#xff1b; Kmp 算法的核心是利用匹配失败的信息&#xff0c;尽量减少模式串与主串的匹配次数&#xff0c;以达到 快速匹配的目的&#xff1b; Kmp 算法的时…...

强化学习方法分类详解

强化学习方法分类详解 引言 强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种通过智能体与环境互动来学习如何做出最佳决策的方法。根据不同的优化中心、策略特性、环境模型、奖励函数、动作空间类型以及行为策略和目标策略的一致性&#xff0c;RL可以分为…...

LSM303D六轴IMU驱动开发:I²C底层集成与100Hz高精度运动检测

1. LSM303D传感器驱动库深度解析&#xff1a;面向嵌入式系统的IC底层集成与高精度运动检测实现LSM303D是意法半导体&#xff08;STMicroelectronics&#xff09;推出的超低功耗、高精度六轴惯性测量单元&#xff08;IMU&#xff09;&#xff0c;集成3轴加速度计与3轴磁力计于单…...

成本控制艺术:OpenClaw+Phi-3-vision-128k-instruct任务级计费方案

成本控制艺术&#xff1a;OpenClawPhi-3-vision-128k-instruct任务级计费方案 1. 当Token消耗成为拦路虎 上个月收到账单时&#xff0c;我的手指在鼠标滚轮上停滞了整整三秒——Phi-3-vision-128k-instruct的API调用费用比预期高出47%。这个数字让我意识到&#xff0c;在享受…...

空间多组学解决方案发展提速:未来六年CAGR锁定15.3%,行业增长预期持续向好

在生命科学领域&#xff0c;精准医学和个性化治疗的需求日益增长&#xff0c;对生物组织和细胞在空间维度上的深入理解成为关键。空间多组学解决方案作为这一需求的核心支撑技术&#xff0c;正受到全球科研和产业界的广泛关注。据恒州诚思调研统计&#xff0c;2025年全球空间多…...

夜间自动化!OpenClaw调度Qwen3-4B完成凌晨数据备份

夜间自动化&#xff01;OpenClaw调度Qwen3-4B完成凌晨数据备份 1. 为什么需要夜间自动化备份 凌晨三点&#xff0c;我的手机突然弹出服务器告警——又一次因为手动备份遗漏导致磁盘空间不足。作为个人开发者&#xff0c;我意识到需要一套能利用闲置计算资源的自动化方案。传统…...

云端开发新选择:星图OpenClaw镜像+千问3.5-9B联调

云端开发新选择&#xff1a;星图OpenClaw镜像千问3.5-9B联调 1. 为什么选择云端联调方案&#xff1f; 去年尝试在MacBook Pro上本地部署OpenClaw时&#xff0c;风扇狂转的噪音让我意识到一个问题&#xff1a;个人设备跑大模型自动化框架的组合实在太吃资源。当时为了调试一个…...

用MATLAB搞定模电实验:单管共射放大电路静态工作点与放大倍数的保姆级仿真

MATLAB仿真单管共射放大电路&#xff1a;从理论到实践的完整指南 引言 在电子工程领域&#xff0c;单管共射放大电路是模拟电路设计的基石之一。传统实验教学中&#xff0c;学生往往需要花费大量时间搭建实体电路、调整参数并测量数据&#xff0c;这不仅效率低下&#xff0c;…...

1-1 从零实现邻接矩阵:构建无向图的核心步骤与实战解析

1. 邻接矩阵与无向图&#xff1a;从概念到代码的桥梁 第一次接触图论时&#xff0c;我完全被那些抽象的概念搞晕了。直到有一天&#xff0c;导师在黑板上画了个简单的社交网络图&#xff1a;"你看&#xff0c;每个人是一个点&#xff0c;好友关系是连线&#xff0c;这不就…...

【CentOS】sshd服务启动失败全攻略:从权限修复到目录缺失的完整解决方案

1. 当sshd服务罢工时&#xff0c;我们该从哪里入手&#xff1f; 每次遇到sshd服务启动失败&#xff0c;就像面对一台突然熄火的汽车——你明明记得昨天还好好的&#xff0c;今天却怎么都打不着火。作为运维人员&#xff0c;这种情况再熟悉不过了。最近我就遇到一个典型案例&…...

cool-admin(midway版)前端权限指令:自定义指令实现权限控制的完整指南

cool-admin(midway版)前端权限指令&#xff1a;自定义指令实现权限控制的完整指南 【免费下载链接】cool-admin-midway &#x1f525; cool-admin(midway版)一个很酷的后台权限管理框架&#xff0c;模块化、插件化、CRUD极速开发&#xff0c;永久开源免费&#xff0c;基于midwa…...

避坑指南:海康摄像头WS流接入H5播放器的那些‘坑’与最佳实践

海康摄像头WS流H5播放器实战&#xff1a;从协议解析到高可用架构设计 当监控视频流需要跨越浏览器边界时&#xff0c;技术挑战往往接踵而至。最近在金融园区项目中&#xff0c;我们通过H5播放器接入海康威视WS协议流时&#xff0c;发现看似简单的视频播放背后隐藏着协议兼容、网…...