claudecode 配置防止配置文件泄露总结
一、先搞懂核心原理:代码是怎么泄露的?
1. Claude Code 读取 & 上传底层机制
- 不会一次性上传整个项目,是按需读取文件:
你让 AI 改某个模块、查 bug 时,AI 会调用内置Read工具读取对应文件,读取到的完整文件内容会通过 HTTPS 上传到 Anthropic 云端服务器做 AI 计算。 - 两个泄密通道:
- 通道 1:AI 自动扫描项目目录,遍历所有文件、读取源码上传(自动泄密)
- 通道 2:你手动让 AI 读取敏感文件(
帮我看config/application.yml),强制读取上传(人为泄密)
- 关键区分两个过滤机制(重中之重)
软过滤vs硬过滤对比
表格
| 配置 | 类型 | 原理 | 缺点 | 安全等级 |
|---|---|---|---|---|
.claudeignore |
软过滤 | AI 自动遍历目录时看不见这个文件,不会主动扫描读取 | 你手动指定路径读取,依然能读到、上传 | ⭐⭐ |
.claude/settings.json permissions.deny |
硬过滤 | 直接拦截Read读取工具,无论 AI 自动扫描还是你手动指定,一律拒绝访问,直接返回 ACCESS DENIED,完全不会上传内容 |
无绕过漏洞 | ⭐⭐⭐⭐⭐(官方强制推荐) |
2. 三层防护逻辑(必须同时配,缺一不可)
- 第一层:
.gitignore(基础,仅 Git 忽略,Claude 不完全遵守) - 第二层:
.claudeignore(软屏蔽,减少 AI 自动扫描敏感目录) - 第三层:
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.json1)新建文件夹 & 文件
- 根目录新建文件夹,名字
.claude - 在
.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:校验配置是否生效(验证小白必做)
打开 Claude Code,输入命令:
/permissions
会弹出权限面板,切换到
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 版:上传的代码片段会被用于模型训练,有泄露给外部用户风险
- 企业付费版:交互数据不会用于训练,数据隔离,适合公司正式开发
五、小白常见误区澄清
- ❌ 只配
.gitignore就安全?
✅ 错,.gitignore只管 Git 提交,Claude Code 会无视它读取文件,必须搭配.claudeignore+deny 硬拦截。 - ❌
.claudeignore能彻底阻止读取?
✅ 不能,只是 AI 不会主动找,你手动指定路径依旧能读,核心防护永远是permissions.deny。 - ❌ Claude Code 会自动推送代码到 GitHub?
✅ 不会自动推送,风险只有读取文件上传云端,不会操作你的 Git 仓库。 - ❌ 配置完不用管了?
✅ 新增涉密模块(如新财务报表包),需要同步更新 deny 规则。
六、最简落地执行清单(复制即用)
- 项目根目录新建
.claudeignore,复制上面模板; - 创建
.claude/settings.json,写入 deny 硬拦截规则; /permissions校验黑名单加载成功;- 测试读取核心财务文件,确认被拦截;
- 关闭 WebSearch、WebFetch 联网工具;
- 核心源码目录本地设置只读权限兜底。
郭慕荣博客园

浙公网安备 33010602011771号