讲师中心 微信公众号
AI工具推荐 视频效率加速

Redis如何防御恶意缓存穿透_在缓存层缓存Null值处理异常数据

老静大大_5239

老静大大_5239

发布时间:2026-05-01 08:46:38

|

615人浏览过

|

来源于php中文网

原创

缓存 null 值本身不能防穿透,正确做法是存空字符串等可识别标记值并分级设置短 TTL,且必须配合布隆过滤器与结构化参数校验。

redis如何防御恶意缓存穿透_在缓存层缓存null值处理异常数据

缓存 null 值本身不能防穿透,反而可能放大风险——关键在于怎么存、存什么、存多久。

为什么 redisTemplate.opsForValue().set(key, null, 60, TimeUnit.SECONDS) 是错的

多数 Redis 客户端(如 Spring Data Redis)序列化 null 时会写入 nil,读出来是空响应,业务层无法区分“真没数据”和“缓存失效/未写入”。这导致: - 每次请求都 fallback 到 DB,穿透照旧 - 监控里看不到空值缓存命中,误判防御生效 - 日志中大量 redisTemplate.opsForValue().get("user:-1") 返回 null,但你不知道它压根没进缓存

正确做法是显式存一个可识别的标记值:redisTemplate.opsForValue().set(key, "", 60, TimeUnit.SECONDS) 或 "NULL" 字符串,且读取时必须做字符串判等,而非判空。

Redis Skill - 高性能缓存管理
Redis Skill - 高性能缓存管理

Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。

下载

空值缓存的 TTL 必须短,且不能一概而论设 5 分钟

设固定 300 秒对多数场景太激进: - 用户 ID 为 Long 类型,但请求传了 "abc" —— 这类非法格式应由参数校验拦截,不该走到缓存层 - 真实稀疏 ID(如注册用户跳号严重),user:999999999 虽然不存在,但可能是合法范围内的 ID,缓存空值 5 分钟会阻塞后续真实查询 - 攻击者用 user:-1、user:0 扫描,这类语义非法 key 应该秒级过期(如 10 秒),而非给它 5 分钟户口

建议按 key 类型分级: - 格式非法 key(含非数字、负数、超长)→ 10 秒 - 格式合法但 DB 查无结果 → 60 秒 - 监控发现某 key 空值命中率持续 >80%,自动降为 5 秒并告警

空值缓存必须配合布隆过滤器,否则就是裸奔

只靠空值缓存,等于把防御阵地从网关后撤到 Redis 层,攻击流量已穿过负载均衡、API 网关、Controller 校验,才在 Redis 里被拦下。此时: - 网络带宽、连接池、线程调度已消耗 - Redis 自身 QPS 承压(尤其高并发查 user:-1) - KEYS user:* 类扫描命令可能触发慢日志

真正有效的链路是: Gateway → 布隆过滤器(预热全量合法 ID)→ 参数校验(@Min(1) + @Valid)→ 缓存空值(兜底)→ DB 布隆必须是全局单例、初始化加载、随写库更新(如新增用户后调用 bloomFilter.add(userId)),不能每次请求 new 一个。

最容易被忽略的点:空值缓存和布隆都防不住“格式合法但语义越界”的请求

比如: - user_id=123 是合法 Long,但业务规定只服务 2024 年后注册用户,123 是 2018 年老 ID → 布隆放行,空值缓存也生效,但这是业务逻辑空,不是穿透 - phone="+8613800138000" 符合正则,但号码库从未录入 → 同样绕过布隆与空值策略

这类请求必须靠结构化校验兜底:^1[3-9]\d{9}$ 验证手机号、@Range(min = 1, max = 999999999) 限制 ID 范围、查表确认租户归属。别信 Swagger 注解单独生效——必须配 @Valid + 全局 @RestControllerAdvice 拦截。

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4189

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

3675

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

6552

2024.04.02

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

623

2024.04.07

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

716

2024.04.07

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

6042

2024.04.07

redis缓存一般存些什么数据
redis缓存一般存些什么数据

redis缓存中存储的数据类型包括:字符串、哈希、列表、集合、有序集合、位图、地理空间数据和hyperloglog。这些数据类型适用于存储各种数据,从简单信息到复杂对象和地理位置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1140

2024.04.07

redis的8种数据类型有哪些
redis的8种数据类型有哪些

redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

996

2024.04.07

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

0

2026.09.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn