我试图用nodeJS开发一个应用程序,它严重依赖于用户通过浏览器通过典型的WebSocket协议连接到它,我在NodeJS中使用ws库。
实际的应用程序可以正常工作,我可以断开任何用户的连接(如果我能够检测到当前IP地址已经连接到),并使用用户名和密码授权它(在服务器端通过websocket发送用户名和密码之后,所有这些都由服务器端负责,我甚至可以在服务器端设置一个计时器,以防止客户端强行强迫服务器使用用户名和密码授权自己);然而,我还没有找到阻止连接发生在first位置的方法。
我是什么意思?例如,客户端的某个人可以打开他们的javascript控制台,只需键入以下内容:
setInterval(function() {
new WebSocket("ws://myServerURL")
}, 1)只要让它继续下去,很快整个服务器就会被完全封锁和/或崩溃,因为来自同一个客户端的大量常量连接将被关闭和/或崩溃。
因此,虽然我能够在用户尝试连接时断开连接(例如,如果我检测到用户已经在相同的IP地址上连接),但我如何阻止某人简单地发送常量连接和/或上述代码之类的命令?从一开始,我怎么能完全阻止一个完整的IP地址打开任何新的连接?
发布于 2019-11-17 04:57:51
发布于 2019-11-17 04:54:41
如果必须的话,您可以在应用程序中这样做,但我建议将服务器放在Nginx (或类似的)后面,并让Nginx处理防止此类泛型攻击。
https://www.nginx.com/blog/mitigating-ddos-attacks-with-nginx-and-nginx-plus/
这样,您就可以专注于构建您的应用程序,而不必重新发明整个过程。
https://stackoverflow.com/questions/58897546
复制相似问题