SuperAPI AI 工具集

start-auth

安全与审计

查看项目

更新于 10-15 21:48

技能介绍

用途:为 TanStack Start 应用添加认证能力,包括路由保护、服务端函数授权、会话与 CSRF 防护。

核心要点(资料中最强调的陷阱):beforeLoad + redirect() 只保护 UI,服务端函数与服务端路由本质上是可被独立访问的 API 端点。即使用户被挡在某个页面外,底层的 createServerFn 处理器仍可能被直接调用(构造请求、重放 RPC)。因此授权必须在服务端函数处理器或其中间件内强制执行,这才是安全边界;beforeLoad 仅用于路由层的用户体验。该技能称处理数据边界前必须阅读 data-boundary.md。

主要能力:提供可移植、无厂商锁定的 DIY 服务端原语模板,包括 _authed 布局 + authMiddleware、会话/CSRF 辅助函数,以及带 PKCE 的 OAuth 授权码流程。会话可用 useSession<T>()(密封 cookie),或通过 getRequest/setResponseHeader 手动设置 __Host- cookie;CSRF 可用 createCsrfMiddleware()(对服务端函数自动生效),并对兄弟子域做 Origin 校验。

关键规则:每个涉及私有数据的服务端函数都要挂 authMiddleware,不依赖 beforeLoad;变更操作使用 POST/PUT/DELETE,避免用会改变状态的 GET;按请求读取环境变量与 cookie,process.env.SECRET 要写在处理器内,不能写在模块顶层;登录、登出、改密码、角色变更等权限变化时轮换会话;对已有与不存在的账号返回一致响应并使用恒定时间密码比较,以防枚举与计时攻击。

官方支持方案列出 Clerk、WorkOS、Better Auth、Auth.js,以及完全 DIY。使用托管库时需安装并遵循其最新文档或 better-auth 技能,不要假设存在 Start 适配器 API;资料说明 TanStack 仓库中没有官方的 start-authjs 示例,真实的 DIY 示例是 start-basic-auth 与 start-supabase-basic。

适用场景:TanStack Start 应用的路由级与数据级认证。限制:不适用于与认证无关的通用路由守卫(react-tanstack-router),也不适用于非 TanStack Start 的 Node 认证场景。分类暂定。