惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
C
Check Point Blog
S
SegmentFault 最新的问题
腾讯CDC
IT之家
IT之家
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog RSS Feed
博客园 - Franky
V
Visual Studio Blog
The Register - Security
The Register - Security
GbyAI
GbyAI
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
U
Unit 42
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
云风的 BLOG
云风的 BLOG
博客园 - 三生石上(FineUI控件)
Schneier on Security
Schneier on Security
N
News and Events Feed by Topic
T
Troy Hunt's Blog
小众软件
小众软件
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
TaoSecurity Blog
TaoSecurity Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
C
CERT Recently Published Vulnerability Notes
aimingoo的专栏
aimingoo的专栏
T
The Exploit Database - CXSecurity.com
Know Your Adversary
Know Your Adversary
G
GRAHAM CLULEY
T
Tenable Blog
P
Palo Alto Networks Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Schneier on Security
Simon Willison's Weblog
Simon Willison's Weblog
H
Help Net Security
WordPress大学
WordPress大学
The Cloudflare Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
MongoDB | Blog
MongoDB | Blog
Forbes - Security
Forbes - Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
W
WeLiveSecurity
I
InfoQ
P
Privacy International News Feed

博客园 - 郭慕荣

彻底搞懂 Codex Skill 与插件:区别、试用、核心作用、项目落地全指南(程序员实战向) Codex Skill 和插件到底有什么区别?程序员如何在项目中落地使用 Claude code分析外部文件总结 Claude code三种模式详解 hasCompletedOnboarding详解 Claudecode 有哪些常用的命令 claude.md文件详解 claude code 的setting文件详解 Docker部署zookeeper总结 Mac中git ssh的配置(GitLab) Java 类加载机制 面试题(一) 如何监控和调优JVM性能? jvm常用的参数有哪些? 怎么配置? hashmap 和currenthashmap 的原理?详解一下 aop在项目中使用的场景?怎么使用? Java dubbo spring springboot中的spi机制 spring中常见的两种代理模式 Redis的zset 面试汇总 drools 规则引擎在线化配置 springcloud中常用的注解详解 springcloud中网关gateway总结 spring是怎么解决循环依赖的? MySQL 死锁 怎么处理? 在写left join的时候 是大表在左侧 还是小表在左侧(二) 在写left join的时候 是大表在左侧 还是小表在左侧(一) nacos客户端(接口调用者)如何感知被调用服务下线? (二) nacos客户端(接口调用者)如何感知被调用服务下线?(一) 在MySQL中 redolog undolog binlog 写入的场景,顺序
claudecode 配置防止配置文件泄露总结
郭慕荣 · 2026-06-18 · via 博客园 - 郭慕荣

一、先搞懂核心原理:代码是怎么泄露的?

1. Claude Code 读取 & 上传底层机制

  1. 不会一次性上传整个项目,是按需读取文件:
    你让 AI 改某个模块、查 bug 时,AI 会调用内置Read工具读取对应文件,读取到的完整文件内容会通过 HTTPS 上传到 Anthropic 云端服务器做 AI 计算。
  2. 两个泄密通道:
    • 通道 1:AI 自动扫描项目目录,遍历所有文件、读取源码上传(自动泄密)
    • 通道 2:你手动让 AI 读取敏感文件(帮我看config/application.yml),强制读取上传(人为泄密)
  3. 关键区分两个过滤机制(重中之重)

    image

配置类型原理缺点安全等级
.claudeignore 软过滤 AI 自动遍历目录时看不见这个文件,不会主动扫描读取 你手动指定路径读取,依然能读到、上传 ⭐⭐
.claude/settings.json permissions.deny 硬过滤 直接拦截Read读取工具,无论 AI 自动扫描还是你手动指定,一律拒绝访问,直接返回 ACCESS DENIED,完全不会上传内容 无绕过漏洞 ⭐⭐⭐⭐⭐(官方强制推荐)

2. 三层防护逻辑(必须同时配,缺一不可)

  1. 第一层:.gitignore(基础,仅 Git 忽略,Claude 不完全遵守)
  2. 第二层:.claudeignore(软屏蔽,减少 AI 自动扫描敏感目录)
  3. 第三层:permissions.deny(硬拦截,终极防泄密,阻断读取上传)

二、哪些目录 / 文件必须禁止 AI 访问(企业 Java 财务项目适配你的中通代码)

1. 密钥配置类(最高泄密风险)

.env、.env.*、application-*.yml、application-*.properties
*.pem、*.key、*.crt、apollo配置文件、数据库连接配置

2. 核心业务源码(财务清分、结算、报表核心逻辑)

com/zto/fncm/**        你的财务核算核心包
com/zto/constant/**    业务枚举、财务属性常量
com/zto/mapper/fncm/** 财务数据库Mapper、SQL逻辑
com/zto/job/**         自动上报定时任务(你写的AutoLockTaskJob)

3. 证书、秘钥、加密工具类

src/main/java/com/zto/security/**
src/main/java/com/zto/crypto/**
secrets/、credentials/、cert/

4. 日志、本地缓存、打包产物(无关且含运行敏感数据)

logs/**、target/**、build/**、*.log、*.out
node_modules/**、.cache/**、.idea/**、.vscode/**

5. 敏感脚本、数据库脚本

sql/**、*.sql、dump/**、数据导出excel/csv

三、分步手把手配置(小白一步一步复制)

步骤 1:创建软过滤文件 .claudeignore(项目根目录新建)

1)新建文件

打开项目根文件夹,新建空白文件,命名 .claudeignore(注意前面有小数点)

2)完整模板(直接复制,适配你的 Java 财务项目)

# 密钥配置文件
.env
.env.*
**/application-*.yml
**/application-*.properties
**/*.pem
**/*.key
**/*.crt

# 财务核心业务包(你的项目核心涉密代码)
com/zto/fncm/**
com/zto/mapper/fncm/**
com/zto/job/**
com/zto/constant/BusinessAttribute.java

# 加密、签名、安全模块
**/security/**
**/crypto/**
secrets/
credentials/
cert/

# 打包、日志、缓存文件
target/**
logs/**
*.log
*.out
build/**
.cache/**

# IDE、Git无关文件
.idea/**
.vscode/**
.git/**
*.iml

# 数据库脚本
sql/**
*.sql
dump/**

原理:

AI 自动遍历项目找代码时,会直接跳过上面所有目录,不会主动读取;但你手动输入读取com/zto/fncm/xxx.java,AI 依旧能读,所以必须配硬过滤。

步骤 2:创建硬拦截配置(核心防泄密,必配)

硬过滤文件路径:项目根目录/.claude/settings.json

1)新建文件夹 & 文件

  1. 根目录新建文件夹,名字 .claude
  2. .claude 文件夹内新建 settings.json

2)完整配置模板(直接复制,deny 里写死禁止读取规则)

{
  "permissions": {
    "allow": [
      "Bash(git status)",
      "Bash(git diff)",
      "Bash(mvn compile)",
      "Bash(mvn test)"
    ],
    "ask": [],
    "deny": [
      // 禁止读取所有密钥配置
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(**/application-*.yml)",
      "Read(**/application-*.properties)",
      "Read(**/*.key)",
      "Read(**/*.pem)",

      // 禁止读取财务核心源码(你的业务涉密代码)
      "Read(com/zto/fncm/**)",
      "Read(com/zto/mapper/fncm/**)",
      "Read(com/zto/job/**)",
      "Read(com/zto/constant/BusinessAttribute.java)",

      // 禁止加密、证书目录
      "Read(**/security/**)",
      "Read(**/crypto/**)",
      "Read(./secrets/**)",
      "Read(./credentials/**)",

      // 禁止读取日志、数据库脚本
      "Read(./logs/**)",
      "Read(./sql/**)",
      "Read(**/*.sql)",

      // 拦截危险shell命令,防止AI读取本地ssh、apollo密钥
      "Bash(cat ~/.ssh/**)",
      "Bash(cat /etc/apollo/**)",
      "Bash(rm -rf *)",
      "Bash(curl *)",
      "Bash(wget *)"
    ]
  },
  "respectGitignore": true
} 

硬过滤工作原理:

只要匹配deny里的Read(路径),任何读取操作直接拦截:

  • AI 自动扫描:读取被拒绝
  • 你手动指定文件路径让 AI 读取:同样返回ACCESS DENIED,文件内容完全不会上传云端,彻底杜绝泄密。

步骤 3:补充全局全局防护(电脑所有项目统一生效)

在电脑用户主目录创建全局 .claudeignore 和全局 settings:

  • Windows:C:\Users\你的用户名\.claudeignore
  • Mac/Linux:~/.claudeignore 全局配置会对电脑所有项目生效,新项目不用重复配置。

步骤 4:校验配置是否生效(验证小白必做)

会弹出权限面板,切换到Deny标签,能看到你配置的所有禁止读取规则,代表配置加载成功。

读取 com/zto/fncm/mapper/FNCSumTaskMapper.java

AI 会直接提示无权读取该文件,不会上传代码,配置生效。

四、额外安全加固方案(企业源码必开)

1. 禁用联网工具,防止 AI 抓取外部数据泄露代码

启动 Claude Code 时增加参数,关闭网页搜索、抓取:

claude --disallowedTools WebSearch,WebFetch
/disallowed-tools add WebSearch WebFetch

2. 敏感文件本地文件系统权限锁死(兜底)

Windows:右键敏感文件夹 → 属性 → 安全,移除当前用户读取权限

Mac/Linux:给核心源码目录设置只读,AI 无法读取

chmod 0400 com/zto/fncm/ -R

3. 禁止复制完整源码粘贴进对话

即使配置全部生效,如果你手动复制财务核心代码粘贴到对话框,依然会上传云端,属于人为泄密,制度层面禁止。

4. 区分个人版 / 企业版数据政策

  • 个人免费 / Pro 版:上传的代码片段会被用于模型训练,有泄露给外部用户风险
  • 企业付费版:交互数据不会用于训练,数据隔离,适合公司正式开发

五、小白常见误区澄清

  1. ❌ 只配 .gitignore 就安全?
    ✅ 错,.gitignore只管 Git 提交,Claude Code 会无视它读取文件,必须搭配.claudeignore+deny 硬拦截。
  2. .claudeignore 能彻底阻止读取?
    ✅ 不能,只是 AI 不会主动找,你手动指定路径依旧能读,核心防护永远是permissions.deny
  3. ❌ Claude Code 会自动推送代码到 GitHub?
    ✅ 不会自动推送,风险只有读取文件上传云端,不会操作你的 Git 仓库。
  4. ❌ 配置完不用管了?
    ✅ 新增涉密模块(如新财务报表包),需要同步更新 deny 规则。

六、最简落地执行清单(复制即用)

  1. 项目根目录新建 .claudeignore,复制上面模板;
  2. 创建 .claude/settings.json,写入 deny 硬拦截规则;
  3. /permissions 校验黑名单加载成功;
  4. 测试读取核心财务文件,确认被拦截;
  5. 关闭 WebSearch、WebFetch 联网工具;
  6. 核心源码目录本地设置只读权限兜底。