25年护网二面
《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token=1860256701&lang=zh_CN
5000篇网安资料库https://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247486065&idx=2&sn=b30ade8200e842743339d428f414475e&chksm=c0e4732df793fa3bf39a6eab17cc0ed0fca5f0e4c979ce64bd112762def9ee7cf0112a7e76af&scene=21#wechat_redirect
苦逼的技术,能干销售就去干销售吧,毕竟年轻不干,35+还是得去干,要不你就专研技术不可替代。那就看看下面这些关于Shiro相关的面试题你懂不?
1. Shiro 的核心架构包含哪些组件?请简述其交互流程。
答案:
Shiro 核心组件包括:
-
Subject:当前用户或系统的抽象,封装操作(登录、权限校验等)。
-
SecurityManager:核心安全管理器,管理所有 Subject 的生命周期和安全操作。
-
Realm:数据源适配器,负责从数据库、LDAP 等加载认证和授权数据。
-
Authenticator:执行认证逻辑(如用户名密码校验)。
-
Authorizer:执行授权逻辑(如角色/权限校验)。
-
SessionManager:管理用户会话,支持分布式环境。
交互流程:
-
用户调用
Subject.login(token)
→SecurityManager
委托Authenticator
→Authenticator
调用Realm
获取认证信息 → 校验成功后建立会话(Session)。
2. Shiro 的 RememberMe
功能存在哪些安全风险?如何防御(如 Shiro-550 漏洞)?
答案:
- 风险(Shiro-550):
-
硬编码密钥:默认
AES
加密密钥硬编码在源码中,攻击者可伪造 RememberMe Cookie 触发反序列化漏洞。 -
利用链:构造恶意序列化数据 → 加密后写入 Cookie → Shiro 解密后反序列化执行任意代码。
-
- 防御措施:
-
升级版本:升级到 1.2.5+ 并更换自定义密钥(
shiro.rememberMe.cipherKey
)。 -
禁用反序列化:配置
securityManager.rememberMeManager.cipherService
为AesCipherService
,禁用危险类。 -
过滤输入:拦截非法 Cookie 格式(如非 Base64 内容)。
-
3. 如何自定义 Shiro 的 Realm
实现多数据源认证(如同时验证数据库和 LDAP)?
答案:
实现 ModularRealmAuthenticator
并重写 doMultiRealmAuthentication
方法:
public class MultiSourceAuthenticator extends ModularRealmAuthenticator { @Override protected AuthenticationInfo doMultiRealmAuthentication(Collection<Realm> realms, AuthenticationToken token) { for (Realm realm : realms) { if (realm.supports(token)) { AuthenticationInfo info = realm.getAuthenticationInfo(token); if (info != null) return info; // 任一 Realm 成功即通过 } } throw new AuthenticationException("All realms failed"); }
}
配置 shiro.ini
:
[main]
authenticator = com.example.MultiSourceAuthenticator
securityManager.authenticator = $authenticator
dbRealm = com.example.DatabaseRealm
ldapRealm = com.example.LdapRealm
securityManager.realms = $dbRealm, $ldapRealm
4. Shiro 的 Session
管理如何实现分布式一致性?请对比 Redis 和 Hazelcast 方案。
答案:
- 实现原理:
-
Redis:通过
RedisSessionDAO
将会话数据存储到 Redis,支持高可用和持久化。 -
Hazelcast:利用内存网格(IMDG)实现分布式内存存储,低延迟但依赖集群内网通信。
-
- 对比:
维度 Redis Hazelcast 数据持久化 支持(RDB/AOF) 仅内存(需配置持久化策略) 性能 高吞吐(网络延迟敏感) 低延迟(本地缓存优先) 部署复杂度 独立部署,需维护 Redis 集群 去中心化,节点自发现 适用场景 大规模分布式系统 中小规模集群或内网环境
5. Shiro 的权限校验(如 isPermitted
)在底层是如何实现的?
答案:
-
调用链:
Subject.isPermitted()
→AuthorizingSecurityManager
→ModularRealmAuthorizer
→Realm.getAuthorizationInfo()
→PermissionResolver
解析权限字符串。 - 核心逻辑:
-
权限字符串格式:
资源:操作:实例
(如user:delete:123
)。 -
校验时通过
WildcardPermission
匹配规则,如user:*
允许所有用户操作。
-
-
缓存优化:授权信息默认通过
AuthorizationCache
缓存,避免频繁查询数据库。
6. 如何利用 Shiro 的 Filter
机制实现 IP 白名单访问控制?
答案:
-
自定义
AccessControlFilter
:
public class IpWhitelistFilter extends AccessControlFilter { private Set<String> allowedIps = new HashSet<>(); @Override protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) { String ip = request.getRemoteAddr(); return allowedIps.contains(ip); } @Override protected boolean onAccessDenied(ServletRequest request, ServletResponse response) { response.getWriter().write("IP denied"); return false; }
}
-
配置
shiro.ini
:
[urls]
/admin/** = ipWhitelist, authc [main]
ipWhitelist = com.example.IpWhitelistFilter
ipWhitelist.allowedIps = 192.168.1.1, 10.0.0.1
相关文章:
25年护网二面
《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…...
《鸟哥的Linux私房菜基础篇》---5 vim 程序编辑器
目录 一、vim程序编辑器的简介 二、命令模式快捷键(默认模式) 1、光标移动 2、编辑操作 3、搜索与替换 三、插入模式快捷键 四、底行模式快捷键(按:进入) 五、高级技巧 1、分屏操作 2、多文件编辑 3、可视化…...
Day21:在排序数组中查找数字
某班级考试成绩按非严格递增顺序记录于整数数组 scores,请返回目标成绩 target 的出现次数。 示例 1: 输入: scores [2, 2, 3, 4, 4, 4, 5, 6, 6, 8], target 4 输出: 3 示例 2: 输入: scores [1, 2, 3, 5, 7, 9], target 6 输出: 0 …...
Android音视频多媒体开源库基础大全
从事音视频开发工作,需要了解哪些常见的开源库,从应用到底软系统,整理了九大类,这里一次帮你总结完。 包含了应用层的MediaRecorder、surfaceView,以及常见音视频处理库FFmpeg和OpenCV,还有视频渲染和音频…...
ManiWAV:通过野外的音频-视频数据学习机器人操作
24年6月来自斯坦福大学、哥伦比亚大学和 TRI 的论文“ManiWAV: Learning Robot Manipulation from In-the-Wild Audio-Visual Data”。 音频信号通过接触为机器人交互和物体属性提供丰富的信息。这些信息可以简化接触丰富的机器人操作技能学习,尤其是当视觉信息本身…...
传感器研习社:Swift Navigation与意法半导体(STMicroelectronics)合作 共同推出端到端GNSS汽车自动驾驶解决方案
自动驾驶系统单纯依赖感知传感器进行定位在遇到恶劣天气或缺乏车道标线的道路场景时很容易失效。此外,由于激光雷达(LiDAR)、视觉等传感器的成本高昂以及将众多不同组件整合为统一系统的复杂性,都可能增加产品研发成本或延迟产品上…...
Java 二维数组元素降序排序(非冒泡排序)
说明:每次比较出最大值后,把最大值设置为最小值-1,再次比较该数组; 创建Object b[][] new Object[N][2];来存储String和Int两种类型数据到同一个数组里 package com.MyJava;import java.util.Scanner;public class Test {public…...
梦回杭州...
她对我说,烟雨中的西湖更别有情趣,我也怀着对‘人间天堂’的憧憬踏上了向往之旅。第一次亲密接触没有感觉中那么好,现在想起来是那时的人和心情都没能安静下来,去慢慢品味它的美。 六下杭州,亲历每一片风景,…...
Spring Boot整合Apache BookKeeper教程
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Spring Boot整合Apache BookKeeper教程 1. 简介 Apache BookKeeper 是一个高性能、持久化的分布式日志存储系统,适用于需要强一致性和高吞吐量的…...
C++项目——内存池
C项目——内存池 前置知识 std::allocator c中所有stl容器都有自己的allocator类用于分配和回收空间,例如vector类中push_back函数的实现方式: template <class T> void Vector<T>::push_back(const T& t) { // are we out of space…...
【设计模式】SOLID 设计原则概述
SOLID 是面向对象设计中的五大原则,不管什么面向对象的语言, 这个准则都很重要,如果你没听说过,赶紧先学一下。它可以提高代码的可维护性、可扩展性和可读性,使代码更加健壮、易于测试和扩展。SOLID 代表以下五个设计原…...
Deepseek-r1:14b+ScraperAPI实现联网本地大模型回答
文章目录 前言一、Deekseek本地部署二、SerpAPI1.什么是SerpAPI?2.如何使用SerpAPI进行Web搜索 三、实现Deepseek-r1:14bScraperAPI实现联网本地大模型回答1. Code 前言 我需要对本地的Deepseek-r1:14b进行提问,我发现它对于实时的问题,或者…...
DHCP工作原理
DHCP报文类型 DHCP Discover 客户端广播发送DHCP discover报文消息, 客户端通过UDP68端口向网络上发送DHCP discover数据包(包含MAC地址和计算机名等信息).源为0.0.0.0, 目的为255.255.255.255 discover等待时间默认为1秒, 1秒内没有得到回应, 客户机会将这一广播包重新发送4次…...
JVM常见面试总结
JVM(Java虚拟机)是Java程序运行的核心,掌握JVM相关知识对于Java开发者至关重要。以下是JVM常见的面试问题总结: 1. JVM内存模型 问题:JVM的内存结构分为哪些部分? 答案: 方法区(Met…...
博客系统自动化测试报告
1.项目背景 基于SSM框架实现的个人博客系统,现有登录注销页面,博客列表页,博客内容页,博客编辑页面。登录即可查看自己曾经发表的博客,通过使用Selenium定位web元素、对获取到的元素进行操作等,对博客系统…...
如何选择合适的 AI 模型?(开源 vs 商业 API,应用场景分析)
1. 引言 在 AI 迅猛发展的今天,各类 AI 模型层出不穷,从开源模型(如 DeepSeek、Llama、Qwen)到商业 API(如 OpenAI 的 ChatGPT、Anthropic 的 Claude、Google Gemini),每种方案都有其优势与适用…...
目标检测20年(二)
没有看过(一)的可以看看笔者这篇文章: 目标检测20年(一)-CSDN博客 目录 3.2 目标检测数据集和指标 3.2.1 数据集 3.2.1.1 Pascal VOC 3.2.1.2 ILSVRC 3.2.1.3 MS-COCO 3.2.1..4 Open Images 3.2.2 指标 3.3 目…...
【linux】统信操作系统修改默认编辑模式从nano改为vim
统信操作系统修改默认编辑模式从nano改为vim 适用命令update-alternatives --config editor rootuos-PC:~# update-alternatives --config editor 有 3 个候选项可用于替换 editor (提供 /usr/bin/editor)。选择 路径 优先级 状态 ---------------------…...
在Fedora-Workstation-Live-x86_64-41-1.4中使用最新版本firefox和腾讯翻译插件让英文网页显示中文翻译
在Fedora-Workstation-Live-x86_64-41-1.4中使用最新版本firefox和腾讯翻译插件让英文网页显示中文翻译 应用——系统工具——终端 suozhangfedora:~$ rpm -aq | grep firefox firefox-131.0.2-1.fc41.x86_64 firefox-langpacks-131.0.2-1.fc41.x86_64 fedora41系统自身安装有f…...
集成学习(下):Stacking集成方法
一、Stacking的元学习革命 1.1 概念 Stacking(堆叠法) 是一种集成学习技术,通过组合多个基学习器(base learner)的预测结果,并利用一个元模型(meta-model)进行二次训练,…...
知道自己鼠标在某个竖直平面上的经纬度信息在这个竖直的平面上的实时坐标
鼠标放上去就开启map.on(mars3d.EventType.mouseMove,结合以下方法实现 callback: function (e) {// 经纬度const mpt LngLatPoint.fromCartesian(e.cartesian)const ptNew proj4Trans([mpt.lng, mpt.lat], "EPSG:4326", CRS.CGCS2000_GK_Zone_3)const …...
【技术简析】触觉智能RK3506 Linux星闪网关开发板:重新定义工业物联新标杆
在工业智能化与物联网深度融合的今天,深圳触觉智能推出首款搭载瑞芯微RK3506芯片的Linux星闪网关开发板,为大家技术解析。 RK3506-国产芯的硬核实力 作为瑞芯微2024年第四季度推出的入门级工业芯片平台,RK3506以三核Cortex-A7(1.…...
GLB文件介绍
GLB文件是由支持glTF(GL Transmission Format)标准的软件或工具生成的。glTF是一种开放的3D模型传输格式,而GLB是其二进制版本,通常用于嵌入纹理和模型数据。以下是常见的生成GLB文件的软件和工具: 1. 3D建模软件 • …...
树莓集团数字产业布局:商业智慧的多维呈现
树莓集团在数字产业的布局展现其前瞻性的商业智慧,通过多维度的战略部署,构建一个 শক্তিশালী且富有活力的数字生态系统。 全国产业园布局:构建数字产业生态链 树莓集团通过在全国范围内建设产业园,有效整合资源&#x…...
“智改数转”新风口,物联网如何重构制造业竞争力?
一、政策背景 为深化制造业智能化改造、数字化转型、网络化联接,江苏省制定了《江苏省深化制造业智能化改造数字化转型网络化联接三年行动计划(2025-2027年)》,提出到2027年,全省制造业企业设备更新、工艺…...
代码随想录第55期训练营第八天|LeetCode344.反转字符串、541.反转字符串II、卡码网:54.替换数字
前言 这是我参加的第二次训练营!!!爽!这次我将更加细致的写清每一道难题,不仅是提升自己,也希望我自己的写的文章对读者有一定的帮助! 打卡代码随想录算法训练营第55期第八天(づ&a…...
c++ XML库用法
在C中,处理XML文件的读写操作可以通过多种库来实现。以下是几个常用且简洁的库: 1. TinyXML-2 简介: TinyXML-2 是一个轻量级的C XML解析库,易于使用且性能良好。特点: 简单易用,API直观。内存占用小,适合嵌入…...
力扣算法Hot100——128. 最长连续序列
题目要求时间复杂度为O(n),因此不能使用两次循环匹配。 首先使用 HashSet 去重,并且 HashSet 查找一个数的复杂度为O(1)外循环还是遍历set集合,里面一重循环需要添加判断,这样才不会达到O( n 2 n^2 n2)判断是否进入最长序列查找循…...
spring-tx笔记
编程式事务与声明式事务的理解 补充:什么是事务? 事务是一个重要概念,尤其在数据库管理系统中。事务是指一组操作。,这些操作要么全部成功执行,要么全部不执行,确保数据的一致性和完整性 编程式事务 编…...
VulnHub-Web-Machine-N7通关攻略
一、信息收集 第一步:确定靶机IP为192.168.0.107 第二步:扫描后台及开放端口 第三步:进行敏感目录及文件扫描 http://192.168.0.107/index.html (CODE:200|SIZE:1620) http://192.168.0.107/server-status (CODE:403|SIZ…...
【PCIe 总线及设备入门学习专栏 3.1 -- PCIe 中为何只有 TLP 会被 Switch 和 RC 进行路由?】
文章目录 Overview为什么 DLLP 不需要路由呢?总结Overview 这里介绍些为什么在 PCIe 中只有 TLP(事务层数据包)会被 Switch 和 Root Complex(RC) 路由,而 DLLP(数据链路层数据包)和 Ordered Set 不会被路由。这是因为 TLP 起始于源端口的事务层,结束于目的端口的事务…...
3月21号
今天写了一些题: P1149 [NOIP 2008 提高组] 火柴棒等式 题目描述 给你 n 根火柴棍,你可以拼出多少个形如 ABC 的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0)。用火柴棍拼数字 0∼9 的…...
以高斯(GaussDB) 为例, 在cmd 命令行连接数据,操作数据库,关闭数据库的详细步骤
以下是使用 Windows 命令行(cmd) 操作 GaussDB(以 GaussDB(for openGauss) 社区版为例) 的详细步骤,涵盖 连接数据库、基本操作、关闭数据库 的全流程: 1. 环境准备 前提条件: 安装 GaussDB&a…...
Spring Boot 3 新特性实战:从理论到实践
引言 Spring Boot 自发布以来,凭借其简洁的配置和强大的功能,迅速成为 Java 开发者的首选框架。随着 Spring Boot 3 的发布,开发者们迎来了更多令人兴奋的新特性。本文将深入探讨 Spring Boot 3 的新特性,并通过实战示例展示如何…...
在 Linux 系统中,路径(Path)用于定位文件或目录的位置。路径分为两种类型:相对路径和绝对路径。它们的核心区别在于路径的起点不同
1. 绝对路径(Absolute Path) 定义: 从根目录 / 开始的完整路径,无论当前在哪个目录下,绝对路径都能唯一指向目标位置。 特点: 以 / 开头。明确且唯一,与当前所在目录无关。 示例: …...
AI 时代的通信新范式:MCP(模块化通信协议)的优势与应用
文章目录 引言 1. 传统 API 的局限性2. MCP(模块化通信协议)的核心优势2.1 更好的模块化支持2.2 低耦合性与灵活性2.3 高性能数据传输2.4 适配分布式 AI 计算架构 3. AI 时代的 MCP 应用案例4. 结论:AI 时代的通信新范式 引言 在 AI 驱动的现…...
Jmeter旧版本如何下载
1.Jmeter最新版本下载位置 https://jmeter.apache.org/download_jmeter.cgi2.Jmeter旧版本下载位置 https://archive.apache.org/dist/jmeter/binaries稳定版本:5.4.1...
XXE漏洞
一、XXE漏洞概述 1. 定义 XXE(XML External Entity Injection)即 XML外部实体注入漏洞,攻击者通过构造恶意XML数据,利用XML解析器的外部实体加载功能,实现 文件读取、内网探测、拒绝服务(DoS)…...
麒麟操作系统安装人大金仓数据库
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 在当前数字化转型和信息安全备受重视的背景下,众多公司积极推进国产化改造进程。在操作系统领域,统信、open 欧拉、中标麒麟、银河麒麟等国产操作系统崭露头角,逐…...
嵌入式芯片与系统设计竞赛,值得参加吗?如何选题?需要学什么?怎么准备?
2025年全国大学生嵌入式芯片与系统设计竞赛已经正式启动,3月10日大赛通知正式下发,3月10日-19日各赛道的选题也陆续公布,4月25日大赛报名截止,感兴趣的同学可以及时关注! 大赛报名通知: 大赛通知丨2025年嵌…...
dfs刷题排列问题 + 子集问题 + 组和问题总结
文章目录 一、排列问题全排列II题解代码 优美的排列题解代码 二、子集问题字母大小写全排列题解代码 找出所有子集的异或总和再求和题解代码 三、组合问题电话号码的字母组合题解代码 括号生成题解代码 组合题解代码 目标和题解代码 组合总和题解代码 总结 一、排列问题 全排列…...
Win上安装Linux(虚拟机版)
目录 1、下载虚拟机Vmware Fusion 2、linux镜像文件下载(redhat版) 3、redhat镜像安装 4、第一次启动linux系统设置 1、下载虚拟机Vmware Fusion 下载地址:Vmware下载链接 2、linux镜像文件下载(redhat版) 官网…...
从零开发数据可视化
一、可视化模版展示 二、知识及素材准备 div css 布局flex布局Less原生js jquery 的使用rem适配echarts基础 相关js、images、font百度网盘下载链接: 通过百度网盘分享的文件:素材1 链接: https://pan.baidu.com/s/1vmZHbhykcvfLzzQT5USr8w?pwdwjx9…...
访问者模式
访问者(Visitor)模式属于行为型模式的一种。 访问者模式主要用于分离算法和对象结构,从而在不修改原有对象的情况下扩展新的操作。它适用于数据结构相对稳定,而操作(行为)容易变化的场景。 访问者模式允许…...
字符指针的三道例题+算法改进
目录 一.杨氏矩阵 1.初级 2.想把下标带回来 二.字符串左旋 算法改进 三.判断是否为字符串旋转结果 算法改进 四. 3个字符函数 1.strcat 2.strncat 3.strstr 一.杨氏矩阵 数字矩阵,每行从左到右递增,每列从上到下递增,编写程序在矩…...
zephyr-中国跨国并购数据(1997-2024.3.8)
Zephyr专注于提供关于跨国并购、合资和投资的数据。本次分享的Zephyr中国跨国并购数据,涵盖了从1997年到2024年3月8日的并购金额、交易类型、交易状态等详细交易记录,可为研究者分析并购趋势与模式、绩效等提供数据支持。 一、数据简介 数据名称&#x…...
UNIX网络编程笔记:套接字
套接字 什么是套接字(Socket)? 套接字(Socket) 是网络编程中的核心概念,可以理解为一种通信端点,用于实现不同设备之间的数据交换。它类似于现实中的“插座”,为应用程序提供了一套…...
协议-CAN-CANopen
是什么? 汽车工程师的总线协议为什么? 1980年代初期,由于没有可满足汽车工程师的总线协议,人们开始开发新的串行总线在底特律举行SAE会议上CAN总线诞生,称之为Automotive Serial Controller Area Network怎么做? 核心本质 两根线上特殊电平的特殊协议张嘴显性电平‘0’,…...
星越L_ 雨刷使用功能讲解
目录 1.向下拨动 2,向上拨动 3.调节雨刷的灵敏度 4.再次向上拨动 5.再向上 6.向内侧拨动 7.后雨刷开启 8.向外侧拨动 9.更换雨刷 1.向下拨动 雨刷单次工作 2,向上拨动 自动雨刷开启 3.调节雨刷的灵敏度 转动滚轮调节雨刷的灵敏度...
关于FastAPI框架的面试题及答案解析
FastAPl是一个现代、快速(高性能)的Web框架,用于构建API,基于Python3.7+的类型提示功能。它由Python开发者SebastianRamirez创建,并且使用了Starlette作为其核心组件以及Pydantic进行数据验证。 文章目录 基础篇1. FastAPI的核心优势是什么?2. 如何定义一个GET请求路由?…...