我已经搜索了netlify文档,但我无法弄清楚。
我有一个位于这里的无服务器函数
/.netlify/functions/orderCreate
但是我可以在浏览器中或使用 curl 点击它,它会尝试创建订单。如果攻击者发现此功能,他们可以在我的数据库中创建数千个假订单。
我知道我可以做一些简单的检查,比如确保它是一个 HTTP 帖子,或者确保它有一些有效的会话 ID,但我真的很想要某种类型的身份验证或更好的安全性。
因为所有请求都应该通过 ajax 请求来自客户端反应应用程序,我可以将其限制为同一域或其他内容吗?
由于 Netlify 不提供基于源检查和特定请求的方法,因此您可以从函数代码中手动执行此操作,如果 Origin 不是您的客户端域,则发送 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
标头。但是,没有什么可以阻止任何人制作curl
请求并欺骗Origin
标头以命中您的函数。如果您希望真正阻止它,则应为应用程序设置适当的身份验证过程。