Node和Socket.io…阻止外部客户端连接

Node and Socket.io ... prevent outside clients from connecting?

本文关键字:外部 客户端 连接 Socket io Node      更新时间:2023-09-26

嗨,我的web应用程序有一个聊天室,遇到了一个问题。我认为这与设置origins选项有关?但我有疑问,如果能给我指引正确的方向,我将不胜感激。简而言之,我发现,不直接在我网页上的用户只需在客户端脚本中添加connect(ip:port)功能,就可以轻松连接到聊天端口。需要什么安全机制来防止这种访问。此外,我并没有使用node.js来实际服务于网页,而是使用laravel。Node主要实现聊天功能,在客户端之间传输消息,并将消息存储在内存中。

我希望我的问题足够清楚,如果不让我知道

基于浏览器的webSocket连接(例如,从浏览器中的Javascript启动的连接)可以通过正确的服务器端设置限制为"同源",这样只有来自您自己网站的网页才能连接。这是因为浏览器协作并宣布连接的合法来源,这样服务器就可以决定传入的连接是否合法。

非基于浏览器的webSocket连接,例如从另一台服务器或浏览器外的某个脚本进行的连接,不能限制为相同的来源(因为没有可信代理设置它们的来源)。如果你想控制这些类型的连接,你需要某种身份验证方案或API密钥或类似的东西,或者放弃对其进行监管,并通过其他方式控制你需要控制的任何东西(速率限制、用户登录、检测非人连接等)

在这方面,webSocket连接实际上与ajax连接没有什么不同。如果一个网页可以使用它,那么除非你实现某种身份验证方案,否则它几乎可以对整个互联网开放。