垃圾邮件套接字 io 连接

Spam socket io connections

如何防止有人像这样发送垃圾套接字连接:

for (let i = 0; i < 10000000; i++) {
    io.connect('ws://localhost:9001');
}

我已经用谷歌搜索了,但所有主题都在谈论如何通过速率限制等来防止 emit。但是如果有人发送垃圾邮件连接而不是垃圾邮件,则不能使用速率限制。对此有任何解决方案或提示吗?谢谢

每个 websocket 连接请求的第一步都是 HTTP GET 握手请求,因此您可以通过 IP 限制 load-balancer/proxy 服务器上的请求数量。在到达您的应用程序之前,所有超过限制的请求都将被拒绝。 例如,阅读如何使用 Nginx 网络代理 here.

如果您不能或不想设置代理服务器,您可以在应用程序级别使用 rate-limiter-flexible or express-rate-limit.

等软件包执行相同的操作
io.on('connection', function (socket) {
  // rate limit here by IP or user ID
});