For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /zh/docs/web/security.md (or send Accept: text/markdown).
安全与隐私
速率限制、密钥、数据导出与审计轨迹。
初学者演练
先决条件:阅读下面的两个初学者指南,完成 Web 本地设置,并在编辑器的根目录中打开此 monorepo。网页设置属于apps/web/.env.local; Next.js不读取根.env。默认fake模式下的/dashboard是无数据库演示; /auth 需要迁移数据库。
简而言之:工作区是一个团队的单独用户、数据和设置。服务器是可信后端;让提供商密钥远离浏览器和电话代码。迁移是创建或更新表的版本化数据库更改。人工智能模型是回答的引擎;型号目录是服务器上可用型号 ID 和价格的列表。提供商是一种外部服务,例如人工智能、电子邮件或计费服务。权利是允许工作区使用某项功能的授权。 Webhook 是一个服务发送到另一个服务的 URL 的消息。
1. 在读取用户拥有的记录的服务器操作或路由中,在查询之前解析登录用户的成员资格和活动 workspaceId。
2. 要求您的代理添加 1 个允许成员案例和 1 个外国工作空间拒绝案例,以获取准确的记录路径;提供涉及的角色和领域。
3. 第一个请求应成功,第二个请求应返回无记录/访问被拒绝。如果仅更改按钮隐藏访问,但直接请求仍然有效,则服务器边界丢失。
对于自定义代码,请从提供的 prompts/README.md 开始,然后复制最接近的提示:对于应用程序屏幕为 prompts/new-app-screen.md,对于公共页面为 prompts/new-landing-page.md。对于服务器、数据库或提供商工作,请为您的编码代理提供本指南的任务,并要求其读取 AGENTS.md、.ai/PROJECT_CONTEXT.md 和匹配的 .ai/ 镜像;检查此处指定的确切源文件;列出文件并在编辑前进行检查;保留工作区所有权和仅限服务器的机密;并向您展示差异。告诉它您想要的行为、输入和输出字段、允许的角色、预期的成功和错误以及测试帐户、提供程序或设备。使用样本值;永远不要粘贴真正的秘密。
在数据之前解决成员资格
会话选择身份;服务器解析活动工作区并验证成员资格/角色。每个用户拥有的记录都使用 workspaceId。客户端字段、URL ID 或模型选择的参数无法替代所有权检查。
平台营销资产和平台管理记录具有明确的平台范围;不要为匿名等候名单条目创建工作空间。
通过异步工作承载边界
任务、作业、工具上下文、API 密钥、内容、存储和出站事件继承经过身份验证的工作区。检查资源 ID 和所有权。允许来自另一个工作区的有效 ID 仍然是授权失败。
首先编写拒绝测试
将每个成功的突变/读取与匿名、外部工作空间和角色不足测试配对。诊断禁止结果时切勿泄露秘密。
安装与配置
rate-limit-runtime 提供连接到 auth、checkout、API 和提交路由的共享限流器 —— 将它扩展到新的易被滥用端点,而不是为每个路由发明计数器。会话配置、仅 HTTPS 的 Cookie 和提供商密钥保持在服务器端。
工作区审计记录(audit-runtime.ts)捕获与安全相关的变更 —— 提供商配置、成员和角色更新 —— 并可在 /settings/audit 中读取。
# Data subject export
src/data-export.ts — assembles a member's
workspace-owned records for account export实现流程
让凭据远离日志、错误负载、分析属性和审计值 —— 可观测性层会脱敏已知密钥,但自由文本是作者的责任。每次读写都在服务器上解析授权;界面状态是呈现,不是证据。
账户数据导出和删除请求通过账户边界,因此适用相同的所有权规则。只存储产品需要的数据。
验证与排障
施压限流器直到返回可重试的 429,验证审计行出现在应产生它们的变更上,并导出测试成员的数据。每次发布探测一次跨工作区读取 —— 最便宜且最重要的回归检查。