50 lines
2.2 KiB
Markdown
50 lines
2.2 KiB
Markdown
# 敏感信息与安全自查(agent-electron-client)
|
||
|
||
## 结论
|
||
|
||
**当前代码未发现硬编码密钥或明显敏感信息泄露。** 已对以下点做了修正与约定说明。
|
||
|
||
---
|
||
|
||
## 已修正
|
||
|
||
### 1. 日志中泄露 API Key(processHandlers.ts)
|
||
|
||
- **问题**:`agentRunner:start` 中 `log.info(..., args.join(' '))` 会输出完整命令行参数,包含 `--api-key <真实 key>`。
|
||
- **修正**:仅记录 `binPath`、`backendPort`、`proxyPort`、`apiBaseUrl`,不再记录含 apiKey 的 args。
|
||
|
||
### 2. 登录失败时打印完整 error(auth.ts)
|
||
|
||
- **问题**:`console.error('[Auth] 登录失败:', error)` 可能把含请求体(如 password)的 error 对象输出到控制台/日志。
|
||
- **修正**:改为只输出 `console.error('[Auth] 登录失败:', errorMessage)`,不再打印整个 error。
|
||
|
||
### 3. 登录成功时打印 configKey(auth.ts)
|
||
|
||
- **问题**:`console.log('[Auth] 登录成功:', { configKey: response.configKey, ... })` 会把客户端 configKey 写入日志。
|
||
- **修正**:改为 `configKeySet: !!response.configKey`,只记录是否设置,不记录内容。
|
||
|
||
---
|
||
|
||
## 已确认安全或低风险
|
||
|
||
| 项 | 说明 |
|
||
|----|------|
|
||
| **API Key 占位符** | UI 中 `placeholder="sk-ant-..."` 仅为占位文案,非真实密钥。 |
|
||
| **acpClient 日志** | `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` 仅打印前若干字符 + `...`,已脱敏。 |
|
||
| **凭证存储** | API key、password、configKey、saved_key 等均通过 IPC 存 SQLite(settings),未写进代码或仓库。 |
|
||
| **环境变量** | `dist:mac:unsigned` 等脚本中 `APPLE_API_KEY=` / `APPLE_ISSUER_ID=` 等置空,用于关闭签名与公证,不涉及真实密钥。 |
|
||
| **文档** | SIGNING.md、verify-sign.js 仅说明 env 名称,无密钥内容。 |
|
||
| **公开 URL** | `DEFAULT_SERVER_HOST`、npm/pypi 镜像等为公开默认配置,非敏感。 |
|
||
|
||
---
|
||
|
||
## 建议
|
||
|
||
1. **生产构建**:若使用 electron-log 等写文件,确保日志轮转与权限控制,避免日志文件被未授权访问。
|
||
2. **configKey / saved_key**:已不在日志中输出全文;若后续有调试需要,仅建议在开发环境且脱敏后使用。
|
||
3. **依赖**:定期 `npm audit`,及时升级存在已知漏洞的依赖。
|
||
|
||
---
|
||
|
||
*自查日期:2026-02*
|