我正在开发一个基于HTML5 Websocket的应用程序,该应用程序应该实时通知用户不同的事件。客户端连接到服务器,发送一些securitytoken的握手,服务器检查securitytoken是否有效,并将客户端添加到活动客户端列表。现在他收到有关特殊事件的通知。
因为来自多片段应用程序的通知不同,所以有一个通知核心可以处理连接的基础知识以及验证,因为它始终是相同的。可以从应用程序访问核心,使用它们可以与服务器通信。
是否有意义或是否有必要在核心中插入一些限制?例如,跟踪user-ip并拒绝连接,如果用户在过去10秒内有超过3个连接到服务器以防止洪水攻击。
在我的意见中,我认为如果有人试图通过按住F5键或使用某些僵尸网络来破坏我的服务,只要他没有向我的服务器发送如此多的流量以至于我的连接可以&#39处理那么多。
如果这很重要,我使用socket.io。
答案 0 :(得分:0)
如果您试图保护您的应用程序免受恶意攻击,那么您需要考虑很多很多事情,确定这些事项的优先级并将开发时间花在可能对您的服务产生最大影响的事情上非常重要。我认为创建多个webSocket连接在优先级列表方式上将非常低,在服务中的操作后面实际改变状态,例如导致写入数据库等等...现代服务器可以轻松容纳数万个套接字并且它只需向大量套接字发送相同的通知,就只需要很少的服务器负载。
此外,使用IP地址作为限制因素可能会导致问题,因为较大的组织可能会使用NAT在许多用户之间共享单个IP地址以进行出站连接。如果您要按用户限制,最好通过userID限制(每个用户唯一登录的内容)。