- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的项目有一个使用 socket.io 在 Node.js 中构建的 WebSocket 服务器。
回顾最近一次中断的原因,我发现前端应用程序进入了一种状态,即它不断进行服务器拒绝的格式错误的连接尝试。它在没有后退的循环中这样做。
最终在此服务器上发生的是单个 Node.js CPU 线程最终被积压阻塞,并产生级联效应——无法发出新请求,无法进行其他处理,等等上。
解决这个问题的简单方法是在客户端上——弄清楚为什么它会进入快速循环并添加一些指数退避。
但是,这并不能解决将来发生类似问题的问题。因此,我需要找到一种方法让我的服务器更具弹性。
一种方法是在调用 server.listen
时使用 backlog
参数。然而,这可能会阻止合法的客户端请求通过。
我希望能够以某种方式识别失控的客户端。由于 NAT、代理和防火墙,IP 地址可能无法正常工作。
那么,保护我的服务器免受此类 DoS 攻击的好方法是什么?
最佳答案
拦截 DoS 攻击的理想位置是在连接到达您的应用程序服务器之前。这通常是在路由器、防火墙或负载平衡器中,您会依赖它对来自特定源的速率进行限制的方法。如果您为托管服务付费,这应该是托管服务必须提供的功能之一,因为许多更大或更显眼的租户会需要这种服务。
从一个意外行为不当的浏览器(就像你在问题中描述的那样),你可以 cookie 一个被拒绝的请求,然后限制任何呈现该 cookie 的客户端(限制它们不超过 N 个连接请求/分钟)。
您不能依赖 cookie 进行真正有目的的 DoS 攻击,因为如果 cookie 干扰了他们的攻击,攻击者可能不会保留 cookie。为此,任何基础设施所能做的就是在源中查找标识信息(通常是 IP 地址)。如果您不小心清除了一些恰好共享相同 NAT 或代理的合法客户端(因此被识别为与 DoS 攻击来源相同的 IP 地址),那么这就是问题的本质。你对此无能为力。您必须不惜一切代价保护服务的完整性,如果 cookie 没有被真正的攻击者保留,您真的无能为力。
如果您选择尝试自己实现这种类型的保护,那么您可以尝试在您的应用程序服务器中实现它(并为此接受一些性能损失),或者您可以在您的同一主机上部署一个中介,例如 NGINX以缓解 DoS 攻击。这是一篇关于为此使用 NGINX 的文章:Mitigating DDoS Attacks with NGINX and NGINX Plus .
关于javascript - 如何使我的 Node.js websocket socket.io 服务器对 DoS 更具弹性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48157191/
我的按钮有问题。该按钮是登录按钮。当我在输入凭据后单击回车时,将触发查看凭据是否正确的方法。这没有任何问题。 但还应该发生的是,在检查这些凭据是否正确之后,登录和注册按钮应该会被删除,同时会出现一个新
因此,我尝试以 Angular 显示多个 View ,以帮助解决我正在构建的网站中遇到的页脚问题。我想确保我一直在阅读和尝试模仿的内容是有意义的。这就是我到目前为止所拥有的。 index.html
我正在尝试创建可调整大小的 div 容器,而且它们是可拖动的。 我使用了 Angular Material 拖放和 angular resizable element 这是解决方法 https://s
我正在尝试创建可调整大小的 div 容器,而且它们是可拖动的。 我使用了 Angular Material 拖放和 angular resizable element 这是解决方法 https://s
我是一名优秀的程序员,十分优秀!