如何限制对我的 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 对您的应用程序进行适当的身份验证过程。
我已经搜索了 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 对您的应用程序进行适当的身份验证过程。