如何限制对我的 Netlify Serverless 功能的访问

How do I limit access to my Netlify Serverless function

我已经搜索了 netlify docs,但我无法弄清楚。

我在此处有一个无服务器函数

/.netlify/functions/orderCreate

但我可以在我的浏览器中或使用 curl 点击它,它会尝试创建一个订单。如果攻击者发现此功能,他们可以在我的数据库中创建数千个假订单。

我知道我可以做一些简单的检查,比如确保它是一个 HTTP post,或者确保它有一些有效的会话 ID,但我真的想要某种类型的身份验证或更好的安全性。

因为所有请求应该来自客户端反应应用程序通过ajax请求我可以将它限制在同一个域或什么吗?

由于 Netlify 不提供根据来源检查特定请求的方法,您可以从函数代码内部手动执行此操作,如果来源不是您的 client-side 域,则发送 403 响应:

exports.handler = function(event, context, callback) {
    if (event.headers["Origin"] !== "https://whateverisyourdomainname.netlify.com")
        return callback(null, { status: 403 })

    // else, do whatever your function does
}

最新的浏览器会阻止用户自己设置 Origin header。但是,没有什么可以阻止任何人制作 curl 请求并欺骗 Origin header 来命中您的函数 。如果您真的想阻止它,您应该 set-up 对您的应用程序进行适当的身份验证过程