Claude Code 装好就安全了?这5个设置你大概都没开

你有没有想过,当你让 Claude Code 帮你"看看这个项目"的时候,它到底看了什么?

前段时间,一个开发者在 Reddit 上分享了一个让他后背发凉的经历:他让 Claude Code 帮忙调试一个 Python 脚本,AI 顺手把 ~/.ssh/config 和项目根目录下的 .env 文件内容都读进了上下文——数据库密码、API 密钥、服务器地址,全部出现在对话记录里。

这不是 bug,这是默认行为

根据 GitGuardian 的年度报告,仅 2023 年一年,GitHub 上检测到的密钥泄露事件就超过了 1000 万次。而随着 AI 编程工具的普及(Stack Overflow 2024 开发者调查显示,超过 76% 的开发者正在使用或计划使用 AI 辅助编程),这个数字只会继续攀升。

我不是要劝你别用 Claude Code——它确实是目前最强的 AI 编程工具之一。我只是想帮你把安全门关好再进去用

下面这 5 个设置,大多数人装完就跳过了。

---

设置 #1:文件访问权限(Permissions)

最容易被忽略的第一道门

Claude Code 默认拥有读取当前工作目录下所有文件的权限。这意味着:

  • .env ✅ 可读
  • .env.production ✅ 可读
  • config/database.yml ✅ 可读
  • ~/.ssh/config(如果你在 home 目录下运行)✅ 可读

很多人以为 AI "只看代码文件",但实际上它并不区分 .py.pem。只要文件在目录里,它就有权限读。

怎么修复

在项目根目录的 settings.json(或 Claude Code 全局配置文件)中,配置 allowedPaths 白名单和 deniedPaths 黑名单:

{

"permissions": {

"allowedPaths": [

"./src",

"./tests",

"./docs",

"./scripts"

],

"deniedPaths": [

".env",

".env.*",

"*.pem",

"*.key",

"*.p12",

"*.pfx",

"secrets/",

"credentials/",

".ssh/"

]

}

}

⚠️ 最小权限原则:只给 AI 它真正需要的目录,其他一律拒绝。这是安全工程的基本原则,对 AI 工具同样适用。

配置完成后,Claude Code 尝试读取 .env 时会收到权限拒绝提示,而不是默默把内容塞进上下文。

耗时估算:5分钟

---

设置 #2:Hooks 钩子拦截机制

你不知道 AI 在偷偷执行什么命令

这是 Claude Code 里最被低估的功能,也是最有安全价值的功能。

Claude Code 支持在执行 shell 命令前后触发自定义钩子脚本。大多数人甚至不知道这个功能存在——更别说用它来审计和拦截危险命令了。

想象一下这个场景:你让 AI 帮你"清理一下项目里的临时文件",结果它生成了一条 rm -rf ./dist 命令——在它真正执行之前,你有机会拦截它吗?

有了 Hooks,你可以。

配置 pre-command hook

在 Claude Code 配置目录下创建钩子脚本:

#!/bin/bash

文件路径:~/.claude/hooks/pre-command.sh

权限:chmod +x pre-command.sh

DANGEROUS_PATTERNS="rm -rf|DROP TABLE|DROP DATABASE|TRUNCATE|curl.\|.bash|wget.\|.sh|eval.*\$|sudo rm"

if echo "$CLAUDE_COMMAND" | grep -qE "$DANGEROUS_PATTERNS"; then

echo ""

echo "⚠️ ===== 高危命令拦截 ====="

echo "检测到以下命令:"

echo " $CLAUDE_COMMAND"

echo ""

echo "此命令已被安全策略拦截。"

echo "如需执行,请在终端手动运行并确认。"

echo "=========================="

echo ""

exit 1

fi

exit 0

然后在 settings.json 中注册这个钩子:

{

"hooks": {

"preCommand": "~/.claude/hooks/pre-command.sh",

"postCommand": "~/.claude/hooks/post-command.sh"

}

}

💡 实用建议:把 rm -rf、数据库 DROP 操作、curl | bash 这类命令列入黑名单。这些是 AI 在"帮忙"时最容易误触的高危操作。
耗时估算:10分钟

---

设置 #3:网络请求白名单

你的 AI 助手在向哪些地址发请求?

Claude Code 在以下场景会发起网络请求:

  • 安装 npm/pip/cargo 依赖
  • 调用外部 API 进行测试
  • fetch 示例数据或文档
  • 下载代码模板

默认情况下,这些请求完全不受限制。对于个人开发者来说,这可能只是隐私问题;对于企业开发者来说,这可能是合规问题。

配置网络白名单

{

"network": {

"allowedDomains": [

"registry.npmjs.org",

"pypi.org",

"crates.io",

"api.github.com",

"your-internal-api.company.com"

],

"blockExternalRequests": false,

"logNetworkRequests": true

}

}

⚠️ 常见误区:很多人以为"我不让 AI 联网"就安全了,但 npm install 这类命令本身就会触发外网请求。网络白名单的意义在于明确知道数据流向哪里,而不是彻底断网。
企业场景特别提示:如果你在内网环境工作,把内部 npm registry、内部 PyPI 镜像加入白名单,同时屏蔽外网访问,可以有效防止依赖投毒攻击。

💡 顺带一提:如果你在国内访问 Claude API 经常遇到网络问题,可以试试 [api.884819.xyz](https://api.884819.xyz)——这是一个稳定的 Claude API 中转服务,支持 claude-opus-4.8claude-sonnet-4-6 等全系列最新模型,按量计费,对开发者非常友好。配合本文的网络白名单设置,把 api.884819.xyz 加入允许域名列表即可无缝使用,不需要额外的网络配置。

耗时估算:5分钟

---

设置 #4:上下文隔离(Context Isolation)

你的对话历史是否在跨项目"串台"?

这是最容易被忽视、但实际影响最大的安全风险之一。

场景还原:

1. 你用 Claude Code 处理 A 项目(一个有数据库密码的 SaaS 产品)

2. 切换到 B 项目(一个开源工具)

3. 你以为上下文已经清空了——但实际上,A 项目的某些信息可能仍然残留在会话记忆中

更危险的是:如果你在 B 项目中问"帮我连接数据库",AI 可能会"好心"地从记忆中调取 A 项目的数据库配置来"帮助"你。

两步解决方案

第一步:创建 .claudeignore 文件

在每个项目根目录创建 .claudeignore,主动排除敏感文件:

# .claudeignore 标准模板

环境变量和密钥

.env

.env.*

.env.local

.env.production

.env.staging

证书和密钥文件

*.pem

*.key

*.p12

*.pfx

*.crt

*.cer

敏感配置

secrets/

credentials/

.secrets

vault/

个人信息

.netrc

.npmrc

.pypirc

数据库文件(可能包含真实数据)

*.sql

*.db

*.sqlite

*.sqlite3

日志(可能包含敏感信息)

logs/

*.log

第二步:切换项目时强制清除上下文

养成习惯:每次切换项目,执行:

# 清除当前会话上下文

claude --clear-context

或者在 Claude Code 界面中手动触发 "New Session"

🔴 高风险提示:如果你同时维护多个项目(比如客户项目 + 自己的副业),上下文串台不只是安全问题,还可能是法律问题(客户数据泄露给另一个客户)。
耗时估算:3分钟

---

设置 #5:审计日志(Audit Log)

出了问题,你能复盘吗?

当 AI 把你的代码改乱了,当某个文件莫名其妙被修改了,当你不确定 AI 到底执行了什么——日志是唯一的"案发现场还原"工具

Claude Code 支持开启操作审计日志,记录:

  • AI 读取了哪些文件
  • AI 执行了哪些命令
  • 每次操作的时间戳
  • 命令的执行结果(成功/失败)

启用审计日志

{

"logging": {

"enabled": true,

"level": "audit",

"logPath": "~/.claude/logs/",

"includeFileAccess": true,

"includeCommandExecution": true,

"retentionDays": 30

}

}

快速查询高危操作

#!/bin/bash

文件:~/.claude/scripts/audit-check.sh

用法:bash audit-check.sh [日期,默认今天]

LOG_DIR="$HOME/.claude/logs"

DATE=${1:-$(date +%Y-%m-%d)}

LOG_FILE="$LOG_DIR/audit-$DATE.log"

echo "=== Claude Code 审计报告:$DATE ==="

echo ""

echo "📁 文件读取记录:"

grep "FILE_READ" "$LOG_FILE" | grep -E "\.env|\.pem|\.key|\.ssh" | head -20

echo ""

echo "⚡ 命令执行记录:"

grep "CMD_EXEC" "$LOG_FILE" | tail -50

echo ""

echo "⚠️ 高危操作记录:"

grep "CMD_EXEC" "$LOG_FILE" | grep -E "rm -rf|DROP|curl.bash|wget.sh"

echo ""

echo "=== 报告结束 ==="

💡 实用技巧:把这个脚本加入 crontab,每天早上自动发送审计摘要到你的邮件,5分钟就能搭好一个轻量级的 AI 操作监控系统。
耗时估算:2分钟

---

安全加固自查清单

照着做,20分钟完成全部配置:

| 设置项 | 风险等级 | 默认状态 | 推荐操作 | 耗时 | | 文件访问权限 | 🔴 高 | 全目录开放 | 配置 allowedPaths 白名单 | 5min | | Hooks 拦截 | 🟡 中 | 未启用 | 添加高危命令拦截脚本 | 10min | | 网络白名单 | 🟡 中 | 全开放 | 限制允许域名 | 5min | | 上下文隔离 | 🔴 高 | 跨项目共享 | 配置 .claudeignore + 清除习惯 | 3min | | 审计日志 | 🟢 低 | 未启用 | 开启并配置定期检查 | 2min | 做完这5项,你已经比绝大多数 Claude Code 用户更安全了。

---

最后说一句

Claude Code 本身没有问题。它读取 .env 不是因为它"坏",而是因为它被设计成尽可能帮你解决问题——而解决问题有时需要读配置文件。

问题是,我们都没有认真读过文档。

这5个设置,加起来不超过半小时。但它们保护的,可能是你花了几年积累的代码库、客户数据和服务器访问权限。

如果你想在国内稳定体验 Claude 全系列模型(包括 claude-opus-4.8claude-sonnet-4-6 等最新版本),8848AI 平台提供了完整的 API 中转服务,注册即送体验 token,国产模型完全免费,按量计费无月租。配合本文的安全设置,是目前最省心的 Claude Code 使用方案。

---

🔜 下一篇预告

安全门关好了——但你有没有想过:

Claude Code 在帮你写代码时,它"看到"的代码质量,直接决定了它输出的代码质量。

下一篇我们聊聊 「如何给 Claude Code 喂高质量上下文」——从 CLAUDE.md 的正确写法,到 codebase indexing 的最佳实践,让同样的模型,在你手里发挥出 3 倍效果。

关注我,不错过。

---

本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

#Claude #AI安全 #ClaudeCode #AI编程 #开发者工具 #8848AI #信息安全 #AI教程