Claude Code 装好就安全了?这5个设置你大概都没开
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 时会收到权限拒绝提示,而不是默默把内容塞进上下文。
---
设置 #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"
}
}
💡 实用建议:把耗时估算:10分钟rm -rf、数据库 DROP 操作、curl | bash这类命令列入黑名单。这些是 AI 在"帮忙"时最容易误触的高危操作。
---
设置 #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.8、claude-sonnet-4-6 等全系列最新模型,按量计费,对开发者非常友好。配合本文的网络白名单设置,把 api.884819.xyz 加入允许域名列表即可无缝使用,不需要额外的网络配置。
---
设置 #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.8、claude-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教程