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

时间:2015-03-03 23:27:15

标签: javascript node.js laravel socket.io

您好我的网络应用程序存在聊天室的问题。从查看它我认为它与设置origins选项有关吗?但我对此表示怀疑,并希望能帮助我朝着正确的方向前进。为了简短起见,我发现直接在我的网页上的用户只需在客户端脚本中添加connect(ip:port)功能即可轻松连接到聊天端口。需要什么安全机制来防止这种访问。我也没有使用node.js来实际为网页提供服务,而是使用laravel。 Node主要实现聊天功能,并将消息传入和传出客户端,并将其存储在内存中。

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

1 个答案:

答案 0 :(得分:1)

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

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

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