问题 1: 因为早先没有意识到. 导致已经在好几个老项目中使用了 claude-code, gemini 这些工具, 所有项目文件都被扫过了. 这些模型会进行数据脱敏吗? 如果密钥泄露了非常棘手啊!
问题 2: 开始新项目, 怎么避免项目配置文件中的密钥泄露? 有没有比较工程化又简单的方法?
1
pikko 2025 年 12 月 29 日
密钥也不放在 git 仓库里的啊
|
2
stinkytofux OP @pikko #1 小公司和我个人的项目也没那么严谨, 像 OSS 这些密钥直接就写配置文件中了. 现在意识到 AI 编程出问题了.
|
3
sentinelK 2025 年 12 月 29 日
没什么诀窍,无非就是照本宣科:不要硬编码。通过服务获取。
btw ,即便是最高风亮节的 Anthropic ,也只是声明了不会用用户的数据再训练。 也就是说,他只能保证你的代码、数据不会被“自己的新模型”吐露给其他用户。但也仅此而已了。 |
4
pikko 2025 年 12 月 29 日
@stinkytofux 配置文件读环境变量,另外一个单独的 sh 文件去赋予环境变量。这是常规操作吧。
|
5
WuSiYu 2025 年 12 月 29 日
每过几个月换个密钥就行了,就算被当作了训练数据也不会立刻反应到市面的模型中
|
6
94 2025 年 12 月 29 日
直接用官方的 API 其实没必要担心,别人还看不上你这点小东西。使用你的数据去训练也不会说直接把你的密钥吐给其他用户(稍微理解一下原理就不会有这样的困扰了)。
要是使用的中转站之类的才需要小心,以及一些使用上的引用问题 /t/1175066 如果使用了 CICD 的话,一般会放到项目仓库的 Secret 里面。后端一般是放到 Nacos 里面配置。 |
7
TArysiyehua 2025 年 12 月 29 日
@stinkytofux 首先你个人项目小公司无所谓了吧?
然后就是,总是通过服务器,环境变量来读取,现在 AI 变成都是通过 Agent 来编程的,它执行的命令要获取真实的秘钥也并不是什么难事。 最保险的还是测试密钥跟线上密钥分开 |
8
bbao 2025 年 12 月 29 日
1 ,配置文件里目前是不安全的;开发同学不掌握线上或者测试环境任何 key
2 ,运维部署时,扩写配置文件,由运维侧来维护和统一管理 key ,代码会提交到 git 仓库,只会在服务器中查看配置 3 ,更安全的方式,通过环境变量的方式进行设置。在部署脚本中维护,代码依旧提交到 git 仓库。(推荐) |
9
lyxxxh2 2025 年 12 月 29 日 .claude/settings.local.json
设置拒绝读取的文件。 |
10
Msxx 2025 年 12 月 29 日 via Android
我都是丢 github 仓库,项目各种 API 都是跟着仓库跑,靠换 key 解决。
|
11
ratazzi 2025 年 12 月 29 日
https://mise.jdx.dev/environments
mise 内置 age 加密 |
12
Aleks 2025 年 12 月 29 日
最佳实践:密钥不能硬编码在项目里,需要配置在部署的环境变量中。
|
13
Amareni 2025 年 12 月 29 日 via Android
AI 给我的建议是配置 Cloudflare Worker(AI 辅助下半小时就配置好➕测试)
|
14
sikong31 2025 年 12 月 29 日
@bbao 具体怎么弄呢?开发不还是需要 key ,总得暴露出来认证吧,环境变量那也是写到文件运行,他就是躺在电脑上。我都用对称加密,但是怕忘记麻烦还是有一份明文密码放 U 盘,现在干脆不用集成的 AI 服务,都自己小片段的用网页 AI ,太麻烦了
|
15
karashoukpan 2025 年 12 月 29 日
|
16
BenjaminSu 2025 年 12 月 29 日 via Android 终于有人意识到这个问题了。所以我目前一直坚持聊天编程
|
17
wpblank 2025 年 12 月 29 日
开发环境的项目全部单起一套需要密钥的服务呗。
|
18
uni 2025 年 12 月 29 日
用 dotnet 吧,自带的 secret manager 才是最佳实践,只要不要不小心在日志里打出来就基本不会有事
|
19
x2ve 2025 年 12 月 29 日
放环境变量或者库里头,测试跟线上分开,这样 ai 读了也没太大影响。
|
20
reallittoma 2025 年 12 月 30 日
开发环境密钥随便读,部署后换一个就好了。
|
21
gadfly3173 2025 年 12 月 30 日
如果是 spring ,把密钥放在 nacos 里之类的配置中心就行了。或者让运维放在容器的 bootstrap.yml 里什么的
|
22
streamrx 2025 年 12 月 30 日 via iPhone
开发和线上又不是一个环境
|
23
busier 2025 年 12 月 30 日 via Android
密钥也可以设置密码啊
|
24
bk201 2025 年 12 月 30 日
私有部署必将盛行
|
25
lysf0515 2025 年 12 月 30 日
我和我老大说过这个事情,他说无所谓的,没啥事,要泄露早泄露了
|
26
tiancaixiaoshuai 2025 年 12 月 30 日
本地开个虚拟机,随便找个后端程序,只写一个获取 token 的方法,需要用密钥的时候访问这个后端,比如 192.168.1.2/?action=get_token ,再解析一下 json 不就可以了
|
28
zzxCNCZ 2025 年 12 月 30 日
一方面,密钥不硬编码在代码中,使用环境变量读取时基操。另一方面,你所有 ide ,插件,各种同步软件只要连上网了,都有泄露风险。
|
29
jsjgjbzhang 2025 年 12 月 30 日
你的密钥没那么重要,没有利用价值的看到都懒得动
|
30
cabing 2025 年 12 月 30 日
密钥打到 docker 里面,也就是放到运行环境里面,跟代码分离。简答又方便。
|
31
unco020511 2025 年 12 月 30 日
https://cursor.com/cn/docs/context/ignore-files
其实和 git 一样,一般的 ai coding 都有忽略文件的配置 然后就是你的密钥部署时是不会出现在源码里的,都在环境变量里 |
32
qiaobeier 2025 年 12 月 30 日
@stinkytofux 再小的公司,就算是个人密钥配置文件本地化也是基本要求吧。
|
33
Oilybear 2025 年 12 月 30 日
- 极度敏感的像 DB 、贵重第三方服务 ak/sk ,走配置中心服务形式下发,开发可见、生产不可见。
- 极度敏感的像 DB 、高成本服务,能上 VPN 内网隔离就上 VPN 内网隔离,这样外部知道链接密钥也不可用 当然没有绝对安全的情况,只能说提高攻击者的攻击成本 |
34
fredweili 2025 年 12 月 30 日
dotenv 这类小工具不是现成的么
|
35
Gilfoyle26 2025 年 12 月 30 日
啊?有这个问题吗?开发和测试和正式的密钥都是不一样的吧,开发的泄露就泄露呗,怎么会担心这个问题。
|
36
colourfulsai 2025 年 12 月 30 日
@sikong31 #14 一般来说可以放到类似~/.develop/xxx.json ,然后开发程序加载时读取(可以参考 https://learn.microsoft.com/zh-cn/aspnet/core/security/app-secrets?view=aspnetcore-10.0&tabs=linux )。AI 服务换一个用户运行(无法读取 home 目录),或者是配置禁止 AI 进程读取机密目录。
|
37
colourfulsai 2025 年 12 月 30 日
@fcfangcc #27 密钥文件放到工程外,然后禁止 AI 进程读取对应目录的权限就行了。不管是放到 home 里然后用其他用户开 AI 进程,还是 systemd 启动 AI 然后 protecthome 都很简单。
|
38
bbao 2025 年 12 月 30 日
|
39
PerFectTime 2025 年 12 月 30 日
@lyxxxh2 #9 没有用, 你就算配置了命令禁用了, 那他通过 python/grep/sed 各种其他的命令, 都能读的到
|