XSS漏洞靶场---(复现)

XSS漏洞靶场—(复现)

反射型 XSS 的特点是攻击者诱导用户点击包含恶意脚本的 URL,服务器接收到请求后将恶意脚本反射回响应页面,浏览器执行该脚本从而造成攻击,恶意脚本不会在服务器端存储。

Level 1(反射型XSS)

image-20250317193251342

image-20250317193110501

此漏洞主要源于代码对用户输入未进行充分的过滤和转义处理。在 PHP 代码里,通过 $_GET["name"] 接收用户从 URL 传递过来的 name 参数,接着直接将该参数输出到 HTML 页面中。若攻击者在 name 参数里注入恶意的 JavaScript 代码,当页面加载时,这些恶意代码就会被浏览器执行,进而达成 XSS 攻击。

通过分析源码,可在name参数上尝试用简单的JS代码进行XSS攻击,看到下面代码执行成功

image-20250317192313770

攻击示例:

http://127.0.0.1/xss-labs-master/level1.php?name=<script> alert("攻击成功")</script>

修复建议:

为了防止 XSS 攻击,需要对用户输入进行过滤和转义处理。在 PHP 中,可以使用 htmlspecialchars 函数将特殊字符转换为 HTML 实体,从而避免恶意代码被执行

解释

  • htmlspecialchars($str, ENT_QUOTES, 'UTF-8'):该函数把字符串中的特殊字符(如 <>"' 等)转换为 HTML 实体(如 <>"' 等),如此一来,即使攻击者注入了恶意的 JavaScript 代码,这些代码也会以文本形式显示,而不会被浏览器执行。
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     confirm("完成的不错!");window.location.href="level2.php?keyword=test"; 
}
</script>
<title>欢迎来到level1</title>
</head>
<body>
<h1 align=center>欢迎来到level1</h1>
<?php 
ini_set("display_errors", 0);
$str = $_GET["name"];
// 对用户输入进行转义处理
$escapedStr = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
echo "<h2 align=center>欢迎用户".$escapedStr."</h2>";
?>
<center><img src=level1.png></center>
<?php 
// 对用于计算长度的字符串也可以考虑进行必要的验证
$lengthStr = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
echo "<h3 align=center>payload的长度:".strlen($lengthStr)."</h3>";
?>
</body>
</html>

Level 2(反射型XSS)

image-20250317193401601

image-20250317193759284

虽然代码在部分输出时使用了 htmlspecialchars 函数对用户输入进行了处理,但在表单输入框的 value 属性赋值时,没有对用户输入进行足够的转义处理。攻击者可以通过构造特殊的输入,绕过这种部分防护,使得恶意的 JavaScript 代码在页面中被执行,从而实现 XSS 攻击。

在上述代码里,$str 是从 $_GET["keyword"] 获取的用户输入,在 <input> 标签的 value 属性中直接使用了 $str,而没有进行合适的转义。

在h2标签之中的恶意代码被htmlspecialchars编码了。其中<、>都被编码成了html字符实体,恶意代码被编码了,只能从属性值中的恶意代码处进行突破了,,只需要将属性的引号和标签先闭合就可以了。

攻击示例:

http://127.0.0.1/xss-labs-master/level2.php?keyword="><script>alert('XSS 攻击成功!')</script><"

image-20250317193900303

修复建议

为了防止这种 XSS 攻击,需要对表单输入框 value 属性中的用户输入也进行转义处理。可以继续使用 htmlspecialchars 函数。

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     confirm("完成的不错!");window.location.href="level3.php?writing=wait"; 
}
</script>
<title>欢迎来到level2</title>
</head>
<body>
<h1 align=center>欢迎来到level2</h1>
<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
// 对输出到 h2 标签中的内容进行转义
$escapedStrH2 = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
// 对输出到 input 标签 value 属性中的内容进行转义
$escapedStrInput = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
echo "<h2 align=center>没有找到和".$escapedStrH2."相关的结果.</h2>".'<center>
<form action=level2.php method=GET>
<input name=keyword  value="'.$escapedStrInput.'">
<input type=submit name=submit value="搜索"/>
</form>
</center>';
?>
<center><img src=level2.png></center>
<?php 
// 对用于计算长度的字符串也进行必要的验证
$lengthStr = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
echo "<h3 align=center>payload的长度:".strlen($lengthStr)."</h3>";
?>
</body>
</html>

Level 3(反射型XSS)

image-20250317194935969

尝试Level 2 的攻击方法后未能成功

image-20250317195153096

image-20250317195340074

代码中对 $str 进行了 htmlspecialchars 处理,在大部分情况下能防止常见的 XSS 攻击。不过,当攻击者利用 HTML 事件属性时,仍可能构造出能执行恶意脚本的情况。在 HTML 标签的属性中,如果输入包含事件处理函数(如 onclickonload 等),即使使用了 htmlspecialchars 转义了引号,攻击者依然可以通过构造合适的输入绕过部分防护。

image-20250317195534631

echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>"."<center>
<form action=level3.php method=GET>
<input name=keyword  value='".htmlspecialchars($str)."'>	
<input type=submit name=submit value=搜索 />
</form>
</center>";

虽然对 value 属性的值进行了转义,但如果攻击者输入的是包含事件处理函数的内容,可能会引发 XSS 攻击

攻击示例:

http://127.0.0.1/xss-labs-master/level3.php?writing='onmouseover='alert("XSS")

'οnmοuseοver='alert(“XSS”)

onmouseover

当用户将鼠标悬停在输入框上时,onmouseover 事件触发,恶意脚本 alert("XSS") 就会被执行

image-20250317201539168

修复建议:

为了更安全地处理用户输入,除了使用 htmlspecialchars 对普通字符进行转义,还需要对可能的 HTML 事件属性进行过滤和验证,或者采用更严格的白名单机制来允许的字符和属性。另外,在现代 Web 开发中,可以考虑使用 htmlentities 函数来进行更全面的转义。

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     confirm("完成的不错!");window.location.href="level4.php?keyword=try harder!"; 
}
</script>
<title>欢迎来到level3</title>
</head>
<body>
<h1 align=center>欢迎来到level3</h1>
<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
// 更全面的转义处理
$escapedStr = htmlentities($str, ENT_QUOTES, 'UTF-8');
echo "<h2 align=center>没有找到和".$escapedStr."相关的结果.</h2>"."<center>
<form action=level3.php method=GET>
<input name=keyword  value='".$escapedStr."'>	
<input type=submit name=submit value=搜索 />
</form>
</center>";
?>
<center><img src=level3.png></center>
<?php 
// 对用于计算长度的字符串也进行转义
$lengthStr = htmlentities($str, ENT_QUOTES, 'UTF-8');
echo "<h3 align=center>payload的长度:".strlen($lengthStr)."</h3>";
?>
</body>
</html>

Level 4 (反射型XSS)

image-20250317202516270

image-20250317202234224

漏洞分析

  1. 过滤不彻底

代码尝试通过 str_replace 函数去除输入中的 <> 字符,以防止用户注入 HTML 标签。然而,攻击者可以利用 HTML 实体编码绕过这种过滤。HTML 实体编码允许将特殊字符用特定的编码表示,例如 < 可以用 < 表示,> 可以用 > 表示。当页面输出时,浏览器会将这些实体编码解析为对应的字符。

  1. 部分输出转义问题

虽然在 <h2> 标签中使用了 htmlspecialchars 对输出进行转义,但在 <input> 标签的 value 属性中,使用的是经过 str_replace 处理后的 $str3,没有再次进行全面的转义,这就给攻击者留下了可乘之机。

攻击示例:

http://127.0.0.1/xss - labs - master/level4.php?keyword="onfocus=javascript:alert('xss') "

当用户点击该 URL 时,浏览器会向服务器发送请求,服务器端代码通过 $_GET["keyword"] 获取到 keyword 参数的值为 "onfocus=javascript:alert('xss') "

原代码中处理逻辑:

$str = $_GET["keyword"];
$str2 = str_replace(">", "", $str);
$str3 = str_replace("<", "", $str2);

这里代码只是简单地去除了 <> 字符,而攻击者输入的内容中并没有直接使用 <> 来包裹脚本,所以这种过滤方式对该恶意输入无效,$str3 仍然是 "onfocus=javascript:alert('xss') "

修复建议:

为了防止此类 XSS 攻击,需要对用户输入进行更严格的过滤和转义处理。可以使用 htmlspecialcharshtmlentities 函数对输出进行全面转义,确保特殊字符被正确处理

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     confirm("完成的不错!");window.location.href="level5.php?keyword=find a way out!"; 
}
</script>
<title>欢迎来到level4</title>
</head>
<body>
<h1 align=center>欢迎来到level4</h1>
<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
// 对输入进行全面的 HTML 实体编码转义
$escapedStr = htmlentities($str, ENT_QUOTES, 'UTF-8');
echo "<h2 align=center>没有找到和".$escapedStr."相关的结果.</h2>".'<center>
<form action=level4.php method=GET>
<input name=keyword  value="'.$escapedStr.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src=level4.png></center>
<?php 
// 对用于计算长度的字符串也进行转义
$lengthStr = htmlentities($str, ENT_QUOTES, 'UTF-8');
echo "<h3 align=center>payload的长度:".strlen($lengthStr)."</h3>";
?>
</body>
</html>

Level 5(反射型XSS)

image-20250317210244626

image-20250317210338381

在这段代码中,$str 变量接收用户输入的 keyword 参数,经过一系列处理后存储在 $str3 中,而 $str3 被直接嵌入到 HTML 表单的 input 标签的 value 属性中,没有进行足够的 HTML 实体转义,这就为 XSS 攻击提供了可能。

攻击原理:

攻击者通过构造恶意的 keyword 参数,将包含 JavaScript 代码的字符串注入到页面中。当页面加载时,浏览器会执行注入的 JavaScript 代码,从而实现攻击目的。例如,使用如下 URL:

http://127.0.0.1/xss-labs-master/level5.php?keyword="><a href=javascript:alert("攻击成功")>"点这"</a>

在这个 URL 中,keyword 参数的值为 "><a href=javascript:alert("攻击成功")>"点这"</a>。当页面加载时,这个恶意代码会被嵌入到 input 标签的 value 属性中,导致浏览器执行 alert("攻击成功") 代码,显示一个提示框,表明攻击成功。

image-20250317211641196

代码中存在问题的部分:

echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level5.php method=GET>
<input name=keyword  value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';

在上述代码中,$str3 直接被嵌入到 input 标签的 value 属性中,没有进行足够的 HTML 实体转义,使得攻击者可以通过构造恶意的 keyword 参数注入 JavaScript 代码。

修复建议:

为了防止 XSS 攻击,需要对用户输入的数据进行充分的 HTML 实体转义。可以使用 htmlspecialchars 函数对 $str3 进行转义,修改后的代码如下:

echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level5.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str3, ENT_QUOTES, 'UTF-8').'">
<input type=submit name=submit value=搜索 />
</form>
</center>';

在这个修改后的代码中,htmlspecialchars 函数将 $str3 中的特殊字符(如 <>" 等)转换为 HTML 实体,从而避免了 JavaScript 代码的注入。ENT_QUOTES 参数表示同时转换单引号和双引号,'UTF-8' 表示使用 UTF-8 编码。

Level 6(反射型)

image-20250317212042882

image-20250317212103797

代码尝试对一些常见的用于 XSS 攻击的关键词进行替换,例如将 <script 替换为 <scr_ipt,将 on 替换为 o_n 等。但这种过滤方式存在严重缺陷:

  • 大小写绕过:过滤操作是基于小写关键词进行的,攻击者可以使用大小写混合的方式绕过过滤。例如,在攻击 payload "><a hRef=javascript:alert(1)>test</a> 中,使用 hRef 而不是 href,就绕过了对 href 的替换。
  • 不完整过滤:只对部分关键词进行了替换,攻击者可以利用其他未被过滤的 HTML 属性和事件来注入恶意脚本。
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level6.php method=GET>
<input name=keyword  value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';

这是漏洞的关键所在。虽然对 $str 进行了 htmlspecialchars 处理,但在将 $str6 嵌入到 input 标签的 value 属性时,没有对其进行充分的 HTML 实体转义。这意味着攻击者构造的恶意代码会被直接插入到 HTML 页面中。

攻击示例:

http://127.0.0.1/xss-labs-master/level6.php?keyword="><a hRef=javascript:alert(1)>test</a>

当用户访问包含恶意 keyword 参数的 URL 时,浏览器会解析并执行嵌入在页面中的恶意脚本。例如,对于 "><a hRef=javascript:alert(1)>test</a> 这个 payload,当页面加载后,input 标签的 value 属性会被提前闭合,后面插入的 <a> 标签会正常显示。当用户点击这个链接时,浏览器会执行 javascript:alert(1) 代码,弹出一个警告框,表明攻击成功。

image-20250317212810046

Level 7(反射型)

image-20250317213103716

image-20250317213134017

$str2 = str_replace("script", "", $str);
$str3 = str_replace("on", "", $str2);
$str4 = str_replace("src", "", $str3);
$str5 = str_replace("data", "", $str4);
$str6 = str_replace("href", "", $str5);

代码尝试对一些常见的用于 XSS 攻击的关键词进行过滤,将它们替换为空字符串。但这种过滤方式存在明显缺陷:

  • 过滤不全面:只对部分关键词进行了过滤,攻击者可以使用其他未被过滤的 HTML 属性和事件来注入恶意脚本。
  • 可绕过过滤:攻击者可以通过一些技巧绕过这些过滤,例如使用大小写混合、重复关键字等方式。比如构造 javascscriptript 绕过对 script 的过滤,当过滤操作移除 script 后,仍能形成有效的 javascript
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level7.php method=GET>
<input name=keyword  value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';

这是漏洞的关键所在。在将处理后的 $str6 嵌入到 input 标签的 value 属性时,没有对其进行充分的 HTML 实体转义。这意味着攻击者构造的恶意代码会被直接插入到 HTML 页面中,当浏览器解析该页面时,就会执行恶意脚本。

攻击示例:

http://127.0.0.1/xss-labs-master/level7.php?keyword="><a hrhrefef=javascscriptript:alert(1)>test</a>

image-20250317213920685

攻击者构造的 keyword 参数为 "><a hrhrefef=javascscriptript:alert(1)>test</a>。通过重复关键字符(如 hrhrefefjavascscriptript),使得过滤函数在移除 hrefscript 后,依然能保留有效的可执行代码。经过过滤后,hrhrefef 变成 hrefjavascscriptript 变成 javascript,最终在页面中形成有效的 <a href="javascript:alert(1)">test</a> 代码,当用户点击链接时,就会触发 alert(1) 弹出警告框。

修复建议:
为了防止 XSS 攻击,需要对最终输出到页面的内容进行充分的 HTML 实体转义。可以使用 htmlspecialchars 函数对 $str6 进行处理,修改后的代码如下:

$str = strtolower($_GET["keyword"]);
$str2 = str_replace("script", "", $str);
$str3 = str_replace("on", "", $str2);
$str4 = str_replace("src", "", $str3);
$str5 = str_replace("data", "", $str4);
$str6 = str_replace("href", "", $str5);
$escaped_str6 = htmlspecialchars($str6, ENT_QUOTES, 'UTF-8');
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level7.php method=GET>
<input name=keyword  value="'.$escaped_str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';

通过 htmlspecialchars 函数将特殊字符(如 <>"' 等)转换为 HTML 实体,这样即使攻击者构造了恶意的 keyword 参数,也无法在页面中执行恶意脚本。

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

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

相关文章

优选算法系列(2.滑动窗口 _ 上)

目录 解法⼀&#xff08;暴力求解&#xff09;&#xff08;不会超时&#xff0c;可以通过&#xff09;&#xff1a;一.长度最小的子数组&#xff08;medium&#xff09; 题目链接209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; 代码&#…

ELK(Elasticsearch、Logstash、Kbana)安装及Spring应用

Elasticsearch安装及Spring应用 一、引言二、基本概念1.索引&#xff08;Index&#xff09;2.类型&#xff08;Type&#xff09;3.文档&#xff08;Document&#xff09;4.分片&#xff08;Shard&#xff09;5.副本&#xff08;Replica&#xff09; 二、ELK搭建1.创建挂载的文件…

Redis,从数据结构到集群的知识总结

Redis基础部分 2. 数据结构 redis底层使用C语言实现&#xff0c;这里主要分析底层数据结构 2.1 动态字符串(SDS) 由于C底层的字符串数组一旦遇到’\0’就会认为这个字符串数组已经结束&#xff0c;意味着无法存储二进制数据&#xff08;如图片、音频等&#xff09;&#xff…

【redis】Jedis 操作 Redis 基础指令(下)

列表操作 lpush/rpush 和 lpop/rpop 将一个或者多个元素从左/右侧放入&#xff08;头/尾插&#xff09;到 list 中 依次头插 从 list 左/右侧取出元素&#xff08;即头/尾删&#xff09; public static void test1(Jedis jedis) { jedis.flushAll(); long n jedis.lpush(…

基于消失点标定前视相机外参

1. 消失点 艺术家&工程师在纸上表现立体图时,常用一种透视法,这种方法源于人们的视觉经验:近大远小,且平行的直线都消失于无穷远处同一个点。就像我们观察两条平行的铁轨时会觉得他们相交于远处的一点,我们把这个点称为消失点。 图1 铁轨组成的消失点 2. 在标定中的应…

TypeScript接口 interface 高级用法完全解析

TypeScript接口 interface 高级用法完全解析 mindmaproot(TypeScript接口高级应用)基础强化可选属性只读属性函数类型高级类型索引签名继承与合并泛型约束设计模式策略模式工厂模式适配器模式工程实践声明合并类型守卫装饰器集成一、接口核心机制深度解析 1.1 类型兼容性原理 …

Vue3 Pinia $subscribe localStorage的用法 Store的组合式写法

Vue3 Pinia $subscribe 可以用来监视Stroe数据的变化 localStorage的用法 localStorage中只能存字符串&#xff0c;所有对象要选转成json字符串 定义store时&#xff0c;从localStorage中读取数据talkList可能是字符串也可能是空数组 Store的组合式写法 直接使用reactiv…

新版AndroidStudio / IDEA上传项目到Gitee

目录 1.Gitee创建仓库 2.填写仓库的信息 3.创建成功后复制仓库的地址 4.检查AndroidStudio是否配置Git 5.点击测试 6.之后Create Git Repository 7.添加到本地仓库 8.提交项目 9.添加上传仓库的地址 10.上传成功 11.去Gitee上刷新检查 1.Gitee创建仓库 2.填写仓库的…

用 Vue 3.5 TypeScript 重新开发3年前甘特图的核心组件

回顾 3年前曾经用 Vue 2.0 开发了一个甘特图组件&#xff0c;如今3年过去了&#xff0c;计划使用Vue 3.5 TypeScript 把组件重新开发&#xff0c;有机会的话再开发一个React版本。 关于之前的组件以前文章 Vue 2.0 甘特图组件 下面录屏是是 用 Vue 3.5 TypeScript 开发的目前…

C语言【数据结构】:时间复杂度和空间复杂度.详解

引言 详细介绍什么是时间复杂度和空间复杂度。 前言&#xff1a;为什么要学习时间复杂度和空间复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源。因此衡量一个算法的好坏&#xff0c;一般是从时间和空间两个维度来衡量的&#xff0c;即时…

Matlab 基于专家pid控制的时滞系统

1、内容简介 Matlab 185-基于专家pid控制的时滞系统 可以交流、咨询、答疑 2、内容说明 略 在处理时滞系统&#xff08;Time Delay Systems&#xff09;时&#xff0c;使用传统的PID控制可能会面临挑战&#xff0c;因为时滞会导致系统的不稳定或性能下降。专家PID控制通过结…

MyBatis源码分析のSql执行流程

文章目录 前言一、准备工作1.1、newExecutor 二、执行Sql2.1、getMappedStatement2.2、query 三、Cache装饰器的执行时机四、补充总结 前言 本篇主要介绍MyBatis解析配置文件完成后&#xff0c;执行sql的相关逻辑&#xff1a; public class Main {public static void main(Str…

【MySQL】数据库基础

目录 一、什么是数据库1.1 为什么要有数据库1.2 数据库的本质是什么1.3 在Linux下看一下数据库 二、主流数据库三、基本使用3.1 连接服务器3.2 服务器&#xff0c;数据库&#xff0c;表关系 四、MySQL架构五、SQL分类六、存储引擎6.1 存储引擎是什么6.2 查看存储引擎6.3 存储引…

算是解决可以访问github但无法clone的问题

本文的前提是使用了**且可以正常访问github 查看代理的端口 将其配置到git 首先查看git配置 git config --list然后添加配置&#xff0c;我这边使用的是Hiddfy默认的端口是12334&#xff0c;如果是clash应该是7890 git config --global http.proxy 127.0.0.1:12334其他 删除…

SpringBoot第三站:配置嵌入式服务器使用外置的Servlet容器

目录 1. 配置嵌入式服务器 1.1 如何定制和修改Servlet容器的相关配置 1.server.port8080 2. server.context-path/tx 3. server.tomcat.uri-encodingUTF-8 1.2 注册Servlet三大组件【Servlet&#xff0c;Filter&#xff0c;Listener】 1. servlet 2. filter 3. 监听器…

AdaLoRA 参数 配置:CAUSAL_LM“ 表示因果语言模型任务

AdaLoRA 参数 配置:CAUSAL_LM" 表示因果语言模型任务 config = AdaLoraConfig( init_r=16, # 增加 LoRA 矩阵的初始秩 lora_alpha=32, target_modules=[“q_proj”, “v_proj”], lora_dropout=0.1, bias=“none”, task_type=“CAUSAL_LM” ) 整体功能概述 AdaLoraCon…

IP 协议

文章目录 IP 协议概述数据包格式首部校验和实例分析实例一 分片抓包分析参考 本文为笔者学习以太网对网上资料归纳整理所做的笔记&#xff0c;文末均附有参考链接&#xff0c;如侵权&#xff0c;请联系删除。 IP 协议 概述 IP 协议是 TCP/IP 协议簇中的核心协议&#xff0c;也…

日常开发记录-radioGroup组件

日常开发记录-radioGroup组件 1.前提2.问题&#xff1a;无限循环调用3.解释Vue 事件传播机制分析与无限循环原因解释4.解决 1.前提 在上一章的&#xff0c;我们实现了radio组件。从这进入了解 新增个radioGroup组件呢。 <template><divclass"q-radio-group&quo…

API调用comfyui工作流,做一个自己的app,chatgpt给我写的前端,一键创建自己的卡通形象,附源码

前言 工具介绍 首先 comfyui你是少不了的&#xff0c;这个是工作流的后端支持&#xff0c;用这个去调试工作流和生成API可调用文件 前端我们就用很流行的gradio吧&#xff0c;什么你一时半会没有学gradio的计划&#xff0c;没事&#xff0c;笔者也没系统学过&#xff0c;我干…

【网络】数据流(Data Workflow)Routes(路由)、Controllers(控制器)、Models(模型) 和 Middleware(中间件)

在图片中&#xff0c;数据流&#xff08;Data Workflow&#xff09;描述了应用程序中数据的流动过程&#xff0c;涉及 Routes&#xff08;路由&#xff09;、Controllers&#xff08;控制器&#xff09;、Models&#xff08;模型&#xff09; 和 Middleware&#xff08;中间件&…