如何在 Next.js 中考虑数据安全
React 服务端组件 提高了性能并简化了数据获取,但也改变了数据访问的位置和方式,改变了前端应用程序处理数据的一些传统安全假设。
本指南将帮助你了解如何在 Next.js 中考虑数据安全以及如何实施最佳实践。
数据获取方法
我们推荐在 Next.js 中使用三种主要的数据获取方法,具体取决于项目的大小和年龄:
我们建议选择一种数据获取方法并避免混合使用。这使在你的代码库中工作的开发人员和安全审计员都能清楚地知道会发生什么。
外部 HTTP API
在现有项目中采用服务端组件时,你应该遵循零信任模型。你可以继续从服务端组件调用现有的 API 端点,如 REST 或 GraphQL,使用 fetch
,就像在客户端组件中一样。
app/page.tsx
import { cookies } from 'next/headers'
export default async function Page() {
const cookieStore = cookies()
const token = cookieStore.get('AUTH_TOKEN')?.value
const res = await fetch('https://api.example.com/profile', {
headers: {
Cookie: `AUTH_TOKEN=${token}`,
// 其他头部
},
})
// ....
}
这种方法在以下情况下效果很好:
- 你已经建立了安全实践。
- 独立的后端团队使用其他语言或独立管理 API。