Pascal Editor
Pascal MCP 安全:回环地址、共享令牌与场景写入边界
检查 HTTP 防护、来源策略、请求限制和版本写入,不把传输认证混同租户隔离或几何安全。
你将学会
- 受管令牌保护的是本地服务边界
- 来源策略和速率限制有具体范围
- 数据修改与导入内容分别防护
开始前需要
- 基础场景图、JavaScript 和 HTTP 知识
- 尺寸与关系具有明确预期的自有小场景
解释实现边界,复现本章检查清单或窄范围图练习。
先看结论
- 共享 MCP 令牌不是租户授权。
- 来源、请求限制和会话范围不同。
- 版本检查防止过期写入,不授权写入。
受管令牌保护的是本地服务边界
CLI 生成 32 字节随机令牌,以请求模式 0600 写入文件并传给 MCP 进程。连接器读取令牌后附加到 HTTP 传输。文件模式仍应在目标操作系统验证,不能说一个数值权限模式就证明所有平台具有等价访问控制。
connectHttp 默认回环监听,非回环绑定没有认证令牌就拒绝启动。配置令牌后,防护通过等长缓冲与 timingSafeEqual 检查 Bearer 或备用 Pascal 令牌头,健康端点也经过该防护。有效共享服务令牌并不是按用户隔离的租户授权方案。
来源策略和速率限制有具体范围
防护检查存在的 Origin,应用 CORS,并在令牌验证前处理 OPTIONS。回环来源、匹配请求 Host 的来源和配置来源都可能被接受,所以不能描述成只允许唯一配置来源。缺少 Origin 的请求仍需配置令牌,浏览器来源策略不能当作非浏览器客户端的认证。
默认每分钟 120 次限制用于 /mcp,键是 socket 远端地址,不是工具预算或用户配额;代理后的客户端可能共用该地址。传输层还管理会话 ID,但它们用于标识协议会话,不能证明工具可访问的每个场景都归该会话所有。
数据修改与导入内容分别防护
覆盖已有命名场景时,save 要求 expectedVersion,并在事务中检查,避免过期写入者静默替换最新状态。但版本匹配并不决定调用者是否应该有写权限。本地服务凭据保持私密,改为共享托管前需要显式设计资源授权。
把导入场景、插件和资源 URL 当作不可信输入:验证结构、检查警告、限制资源来源并保留可恢复导出。图修复不是适用于任意插件的通用清理器,也不是建筑专业安全评估。本次审查源码与隔离辅助函数,没有运行认证服务或完整安全测试。
实施步骤
- 1
保持回环服务并保护令牌文件。
- 2
审查允许来源和代理地址共享。
- 3
覆盖时使用已观察版本,处理冲突。
- 4
授予写入前检查导入、插件和资源。
可复制示例
{"loopbackOnly":true,"sharedTokenIsTenantAuthorization":false,"overwriteNeedsExpectedVersion":true,"importsRequireReview":true,"publicMcpExposure":false,"securityIntegrationExecuted":false}常见问题
限制是每用户每分钟 120 次工具调用吗?
不是。所查默认值按远端 socket 地址统计 /mcp HTTP 请求,不是工具调用或认证用户。
expectedVersion 会授予写权限吗?
不会。它检查并发状态,资源授权属于宿主集成的另一项职责。
资料来源
- README.md来源核查 2026-09-08
- LICENSE来源核查 2026-09-08
- packages/cli/package.json来源核查 2026-09-08
- packages/core/package.json来源核查 2026-09-08
- packages/viewer/README.md来源核查 2026-09-08
- packages/cli/src/runtime.ts来源核查 2026-09-08
- packages/cli/src/editor-process.ts来源核查 2026-09-08
- packages/cli/src/mcp-connector.ts来源核查 2026-09-08
- packages/mcp/src/transports/http.ts来源核查 2026-09-08
- packages/mcp/src/storage/sqlite-scene-store.ts来源核查 2026-09-08
- packages/core/src/store/use-scene.ts来源核查 2026-09-08
- packages/viewer/src/components/renderers/node-renderer.tsx来源核查 2026-09-08
- packages/viewer/src/lib/renderer-capability.ts来源核查 2026-09-08
- packages/core/src/validation/validate-build-json.ts来源核查 2026-09-08
- packages/core/src/utils/heal-scene-graph.ts来源核查 2026-09-08
- packages/mcp/src/storage/slug.ts来源核查 2026-09-08