claudecode 配置防止配置文件泄露总结

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

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

  1. 不会一次性上传整个项目,是按需读取文件:
    你让 AI 改某个模块、查 bug 时,AI 会调用内置Read工具读取对应文件,读取到的完整文件内容会通过 HTTPS 上传到 Anthropic 云端服务器做 AI 计算。
  2. 两个泄密通道:
    • 通道 1:AI 自动扫描项目目录,遍历所有文件、读取源码上传(自动泄密)
    • 通道 2:你手动让 AI 读取敏感文件(帮我看config/application.yml),强制读取上传(人为泄密)
  3. 关键区分两个过滤机制(重中之重)
    image
    软过滤vs硬过滤对比
表格
 
配置类型原理缺点安全等级
.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:校验配置是否生效(验证小白必做)

打开 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 版:上传的代码片段会被用于模型训练,有泄露给外部用户风险
  • 企业付费版:交互数据不会用于训练,数据隔离,适合公司正式开发

五、小白常见误区澄清

  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. 核心源码目录本地设置只读权限兜底。
posted @ 2026-06-18 11:28  郭慕荣  阅读(42)  评论(0)    收藏  举报