gpt4 book ai didi

meteor - 如何保护我的 Meteor 服务器免受客户端无限循环的影响?

转载 作者:行者123 更新时间:2023-12-03 18:31:28 26 4
gpt4 key购买 nike

我遇到过客户端上的无限循环导致 Meteor 服务器崩溃的情况。无限循环是一个我将修复的错误,而不是这个问题的主题。我担心的是恶意用户可能会创建自己的无限循环并使 Meteor 服务器崩溃。

有问题的无限循环反复调用 Meteor.subscribe(...)Meteor.call(...) .看起来这些请求在服务器上排队到无法使用的程度,即使客户端的意图是放弃它们。有没有办法告诉服务器请求已被放弃并将其从队列中删除?

我想这不会保护服务器免受连续发出数千个请求而不放弃它们的客户端的影响,所以如果有人有答案,这个问题将取代这个问题。如何限制单个客户端可以发出的请求数量?

在这些 APM 图表中,您可以看到无限循环如何影响性能。我在大约 13:17 启动它,并在 13:25 应用程序崩溃(因超出其内存配额而被 Heroku 终止)。

Meteor APM charts - kadira.io - client infinite loop causes server crash

最佳答案

当 Meteor.subscribe 被调用时,Meteor.publish 函数在服务器上执行。因此,您可以在发布功能中决定不提供数据。

这取决于您是否希望用户登录或不提供数据。如果您希望用户登录,您可以创建一个集合,使用所使用的用户 ID 注册对发布函数的任何调用(即任何客户端订阅请求)。您可以在登录用户尝试订阅时询问此集合,并检查该用户最近是否进行了多次请求。如果此客户端命中您定义的请求配额,则只需返回 null。

您可以使用 https://github.com/gadicc/meteor-headers 对未登录的用户执行相同操作。打包并注册IP地址。

您可以在客户端meteor.call() 重复调用的服务器方法中执行相同操作。

我认为检查这个数据库(它会保持很小,因为只有最近的连接必须保存在数据库中)并决定是否提供数据会比每次提供数据耗时更少。

我希望这有帮助。

关于meteor - 如何保护我的 Meteor 服务器免受客户端无限循环的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27868810/

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