gpt4 book ai didi

javascript - 您是否应该向前端公开一个将数据写入数据库的函数?

转载 作者:行者123 更新时间:2023-12-01 00:01:30 24 4
gpt4 key购买 nike

我的前端 Web 代码中嵌入了一个函数,用于接受经过身份验证的用户的订单。一位好奇的用户决定检查我的网络代码并了解此功能。因此,他找到了我的数据库中存储订单的位置,以及经过身份验证的用户有权在该集合中写入的权限。他决定向订单集合发送垃圾邮件,并用成人消息填充我的数据库。我怎样才能阻止它?

    orderButton.addEventListener('click', (e)=>{
db.collection('orders').add({item: e.target.id, buyer: user.uid})
})

我应该在后端执行云功能来检查有效性或限制每小时的订单。如果是这样,为什么我不应该首先在后端编写订单函数,然后从前端调用?

Firebase 对后端云功能收取额外费用,因此我想知道有什么方法可以节省成本并在前端发挥所有作用?

最佳答案

从客户端直接写入数据库是 Firebase 的功能之一,但它并不能用于所有用途。例如,它的最佳应用是让用户更改自己的描述或个人资料图片,或编辑自己的博客文章。不能伤害别人的东西。你应该写足够的security rules为了消除任何可能的滥用此功能的情况,例如,您不允许用户编辑其他用户的博客文章

拥有一个让每个用户(甚至经过身份验证的用户)都可以写入的 orders 集合是不应该的。如果您允许用户在 orders 数据库中创建订单,则无法阻止任何用户向该数据库发送虚假订单,或使用其他用户的名称创建订单(通过在 buyer< 中输入任何其他 ID)/ 字段)。您不能信任该集合中的数据

这不是公开客户端代码中的函数以供他人阅读,而是更多地涉及制定甚至允许此类操作的安全规则

总结并回答您的问题,有时让用户在正确设计的安全规则下直接写入数据库是可以的,但在您的场景中并非如此。如果您希望 orders 集合可信,您应该从服务器端管理它

关于javascript - 您是否应该向前端公开一个将数据写入数据库的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60693955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com