Skip to content

feat(security): 添加输入输出安全过滤模块 - #111

Open
zjm11902 wants to merge 1 commit into
nageoffer:mainfrom
zjm11902:feat/safety-filter-chain
Open

feat(security): 添加输入输出安全过滤模块#111
zjm11902 wants to merge 1 commit into
nageoffer:mainfrom
zjm11902:feat/safety-filter-chain

Conversation

@zjm11902

@zjm11902 zjm11902 commented Aug 8, 2026

Copy link
Copy Markdown

概述

为 Ragent 添加完整的输入输出安全过滤模块,填补当前版本在安全防护方面的空白。

改动内容

  • 新增 SafetyFilter / SafetyRule 接口,基于责任链模式
  • DefaultSafetyFilter:Spring 自动发现所有 SafetyRule Bean,按 @order 排序执行
  • 4 条默认规则:输入长度限制、敏感词过滤、Prompt注入检测、正则模式匹配
  • 输出安全:流式脱敏(手机号/身份证/邮箱/API Key)+ Prompt 泄露检测
  • MCP 工具权限控制:@McpToolPermission 注解 + McpPermissionEnforcer
  • SLF4J 审计日志(SAFETY_AUDIT marker),方便对接 ELK/Splunk
  • 通过 rag.security.* 配置总开关,默认启用
  • 关闭后(rag.security.enabled=false)对现有行为零影响

设计理念

  • 规则实现只需加 @Component + @Order,无需手动注册
  • 遇 BLOCK 短路返回,WARN 合并后附加约束
  • 输出过滤独立于输入过滤,可按需单独开关
  • 全链路可审计

- 新增安全过滤器接口 SafetyFilter 和规则接口 SafetyRule
- 实现基于责任链的 DefaultSafetyFilter(PASS/BLOCK/WARN 三态)
- 4 条默认规则:输入长度/敏感词/Prompt注入检测/正则模式匹配
- 输出安全:流式脱敏(手机号/身份证/邮箱/API Key)+ Prompt泄露检测
- MCP 工具权限控制(@McpToolPermission 注解 + McpPermissionEnforcer)
- SLF4J 审计日志(SAFETY_AUDIT marker)
- 通过 rag.security.* 配置开关,默认启用
- 关闭后对现有行为零影响
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant