NextJS API 路由受 API 密钥保护

NextJS API Route Protected with API Key

提问人:Santiago Padilla 提问时间:11/18/2023 最后编辑:Brian Tompsett - 汤莱恩Santiago Padilla 更新时间:11/18/2023 访问量:37

问:

我正在用 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 免受黑客攻击。

JavaScript 下一个.js auth0

评论


答:

0赞 aarvinr 11/18/2023 #1

对于大多数项目来说,带有环境变量的设置可以完美地工作,所以我想说你很好。以下是您可能想要执行的一些其他步骤:

  • 设置后端逻辑,防止 DDoS 攻击(黑客向 API 发送大量流量,使其不堪重负)。
  • 检查以确保代码未使用某种形式的清理插入到 API 密钥中,以防止恶意代码在服务器上运行。

无论如何,我都不是安全专家,有数百种方法可以保护您的应用程序。对于大多数小型项目,只需简单的设置即可。

许多托管服务提供商(例如 Vercel)还提供自己的保护,以防止 DDoS 攻击和其他黑客攻击,因此除非您从头开始构建所有内容,否则您可能不需要担心太多。