From cb7148b8977bec102d24914c880ca0f366db7203 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 7 Apr 2026 15:17:52 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BB=A3=E7=A0=81=E5=AE=A1=E6=9F=A5?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E2=80=94=20=E9=BB=98=E8=AE=A4=E7=BB=91?= =?UTF-8?q?=E5=AE=9A127.0.0.1=20+=20persona=5Fid=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=20+=20.env.mcp=E9=94=99=E8=AF=AF=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/47ef90c4-eb62-4d91-9f21-475c33a7d166 Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com> --- server/age-os/ecosystem.config.js | 6 ++++-- server/age-os/mcp-server/cos.js | 4 ++++ server/age-os/mcp-server/server.js | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/server/age-os/ecosystem.config.js b/server/age-os/ecosystem.config.js index e693a908..03a98d87 100644 --- a/server/age-os/ecosystem.config.js +++ b/server/age-os/ecosystem.config.js @@ -18,8 +18,10 @@ function loadEnvFile(envPath) { env[trimmed.slice(0, eqIdx)] = trimmed.slice(eqIdx + 1); } } - } catch { - // .env.mcp 不存在时使用默认值 + } catch (err) { + if (err.code !== 'ENOENT') { + console.error(`[PM2] .env.mcp 读取错误: ${err.message}`); + } } return env; } diff --git a/server/age-os/mcp-server/cos.js b/server/age-os/mcp-server/cos.js index 0b5972cd..0dd51990 100644 --- a/server/age-os/mcp-server/cos.js +++ b/server/age-os/mcp-server/cos.js @@ -75,6 +75,10 @@ function validatePersonaCosPath(personaId, key) { if (!personaId || typeof personaId !== 'string') { throw new Error('persona_id 不能为空'); } + // 验证 persona_id 仅包含安全字符(字母、数字、下划线、连字符) + if (!/^[a-zA-Z0-9_-]+$/.test(personaId)) { + throw new Error('persona_id 包含非法字符,仅允许字母、数字、下划线、连字符'); + } // 规范化:确保路径以 persona_id/ 开头 const normalizedKey = key.startsWith('/') ? key.slice(1) : key; if (!normalizedKey.startsWith(`${personaId}/`)) { diff --git a/server/age-os/mcp-server/server.js b/server/age-os/mcp-server/server.js index bf7a071a..eb56f9ba 100644 --- a/server/age-os/mcp-server/server.js +++ b/server/age-os/mcp-server/server.js @@ -457,9 +457,9 @@ async function logToolCall(tool, caller, status, durationMs, errorMsg) { } // ─── 启动 ─── -// 监听 0.0.0.0 允许 Nginx 从外部反代访问 -// 鉴权由 apiKeyAuth 中间件保护 -const BIND_HOST = process.env.MCP_BIND_HOST || '0.0.0.0'; +// 默认监听 127.0.0.1(安全默认值) +// Nginx 从本机反代访问,无需暴露到外部网络 +const BIND_HOST = process.env.MCP_BIND_HOST || '127.0.0.1'; app.listen(PORT, BIND_HOST, () => { console.log(`[MCP] AGE OS MCP Server 启动 · ${BIND_HOST}:${PORT}`); console.log(`[MCP] 工具数量: ${Object.keys(TOOLS).length}`);