我正在 NextJS 13 中制作一个应用程序,我正在使用 API 路由,我想保护它们以防止它们调用应用程序允许范围之外的函数。在我的应用程序中,我使用 Auth0,但我不需要任何与 Auth 一起使用的保护,因为在应用程序中,未经注册的人可以调用函数。
因此,在我的 .env 中,我添加了一个随机密钥,它可以保护我的所有 API 路由。
这就是我调用 fetch 时的样子:
const req = await fetch(`${process.env.BASE_URL}/api/${path}`, {
method: method,
headers: {
'Content-Type': 'application/json',
'authorization': process.env.API_KEY!,
},
body: JSON.stringify(body)
})
这是我的 API 路线之一:
export async function DELETE(req: NextRequest) {
try {
// Validate API KEY
const headersInstance = headers()
const authorization = headersInstance.get('authorization')
if (!authorization || authorization !== process.env.API_KEY) throw new Error('Invalid API_KEY')
//
这是保护我的 API 路由的好方法吗?
基本上我想要实现的是保护我的 API 免受黑客攻击。
对于大多数项目,使用环境变量的设置可以完美工作,所以我想说你很好。以下是您可能需要采取的一些额外步骤:
无论如何,我都不是安全专家,有数百种方法可以保护您的应用程序。对于大多数小型项目,只需简单的设置就可以了。
许多托管提供商(例如 Vercel)还提供自己的保护措施,防止 DDoS 攻击和其他黑客攻击,因此您可能不需要太担心,除非您从头开始构建所有内容。